Conrado Sol
- 29 Nis 2026
- 112 Mesaj
Aktiflik
Seviye
Deneyim
Herkese merhabalar bugün farklı bir konu ile karşınızdayım. Geçmişte Crystal gibi pek bilinmeyen diller üzerine konu işlemiştik şimdi ise Nim dilini göreceğiz. Bu dil söz dizimi olarak Python programlama diline çok benziyor bu yüzden öğrenmeniz kolay olur düşüncesindeyim.
Peki kısaca bakacak olursak bu dile; C, C++ ve Python dillerinin bazı özelliklerini bir araya getiriyor ve çoklu işletim sistemi desteği sunuyor. Tabi ki kurulumdan önce Windows işletim sisteminize MSys2 kurmanız gerekmekte bunun için aşağıda yer alan link üzerinden indirerek kurulumunuzu yapın;
Link : msys2.org/#installation
Daha sonra Windows Başlat menüsünde MSYS2 UCRT64 yazıp açın, MSYS2 UCRT64 terminalini kullanacaksınız. Karşınıza gelen terminal üzerinden aşağıdaki komutu girin ve gelen uyarıların hepsine y deyip kurulumu yapın bu mevcut paketleri güncellemeniz için gerekli olan komut.
Kurulumu yaptıktan sonra CMD üzerine çalışmak ve direkt olarak eklemek için ortam değişkenlerine MSys2 dosyaları içerisinde yer alan bin adlı klasörü ekleyerek tanıtalım muhtemel hedef klasör yolunuz; C:\msys64\ucrt64\bin örnek bir video aşağıya bırakıyorum buradaki adımları da takip edebilirsiniz.
Bunları yaptıktan sonra Nim programlama dilimizi indirelim linkimiz; nim-lang.org/install.html Kurulumu yaptıktan sonra CMD üzerinde aşağıdaki komutları girerek test edebilirsiniz şahsen bende aşağıda yer alan görsel gibi bir sonuç çıkıyor.
Ben de bu dille ilk defa tanıştığım için fonksiyon çağrıları, döngüleri vesaire öğrenmediğim için en basit olandan başlamak istiyorum yani Merhaba dünya ile exe ve DLL derleyip C# diline entegre edeceğim. İlk önce exe oluşturmadan başlayalım masaüstüne bir adet merhaba.nim uzantılı bir dosya oluşturalım ve aşağıdaki kod bloğunu girelim.
Daha sonra terminale şu kodu yazalım.
Ardından merhaba.exe dosyamız oluştu tıklayalım bakalım sonuç nedir.
Görüldüğü üzere işlem başarılı şimdi ise basit bir toplama çıkarma işlemi yapan DLL oluşturup bunu C# ile haberleşmesini yapalım. Herhangi bir dizin üzerinde yine nim uzantılı bir dosya oluşturalım ben math.nim olsun istedim siz keyfinize göre bir isim verebilirsiniz. Daha sonra bu dosya içerisine aşağıdaki kodları girelim.
Daha sonra dizin üzerinde terminale şu komutu verelim.
Ve DLL dosyamız başarıyla oluştu şimdi bunu C# üzerinde tanıtalım. Basit temelli olduğu için toplama çıkarma işlemi yapacak bu yüzden sayı girilmesi için iki adet textbox ve sonuçları göstermek adına iki adet label operasyonu devreye almak içinse bir adet buton ekledim. Oluşan DLL 'yi ise direkt tanıması için proje klasöründe yer alan bin dosyası içerisine attım.
Şimdi projeyi derleyip çalıştıralım bakalım sonuç veriyor mu?
Görüldüğü üzere sonuç başarılı okuduğunuz için teşekkür ederim.
Peki kısaca bakacak olursak bu dile; C, C++ ve Python dillerinin bazı özelliklerini bir araya getiriyor ve çoklu işletim sistemi desteği sunuyor. Tabi ki kurulumdan önce Windows işletim sisteminize MSys2 kurmanız gerekmekte bunun için aşağıda yer alan link üzerinden indirerek kurulumunuzu yapın;
Link : msys2.org/#installation
Daha sonra Windows Başlat menüsünde MSYS2 UCRT64 yazıp açın, MSYS2 UCRT64 terminalini kullanacaksınız. Karşınıza gelen terminal üzerinden aşağıdaki komutu girin ve gelen uyarıların hepsine y deyip kurulumu yapın bu mevcut paketleri güncellemeniz için gerekli olan komut.
Bash:
pacman -Syu
Kurulumu yaptıktan sonra CMD üzerine çalışmak ve direkt olarak eklemek için ortam değişkenlerine MSys2 dosyaları içerisinde yer alan bin adlı klasörü ekleyerek tanıtalım muhtemel hedef klasör yolunuz; C:\msys64\ucrt64\bin örnek bir video aşağıya bırakıyorum buradaki adımları da takip edebilirsiniz.
Bunları yaptıktan sonra Nim programlama dilimizi indirelim linkimiz; nim-lang.org/install.html Kurulumu yaptıktan sonra CMD üzerinde aşağıdaki komutları girerek test edebilirsiniz şahsen bende aşağıda yer alan görsel gibi bir sonuç çıkıyor.
Kod:
nim --version
gcc --version
Ben de bu dille ilk defa tanıştığım için fonksiyon çağrıları, döngüleri vesaire öğrenmediğim için en basit olandan başlamak istiyorum yani Merhaba dünya ile exe ve DLL derleyip C# diline entegre edeceğim. İlk önce exe oluşturmadan başlayalım masaüstüne bir adet merhaba.nim uzantılı bir dosya oluşturalım ve aşağıdaki kod bloğunu girelim.
Kod:
echo "Merhaba Dünya"
echo "Bu program Nim ile derlendi."
discard readLine(stdin)
Daha sonra terminale şu kodu yazalım.
Bash:
nim c -d:release -o:merhaba.exe merhaba.nim
Ardından merhaba.exe dosyamız oluştu tıklayalım bakalım sonuç nedir.
Görüldüğü üzere işlem başarılı şimdi ise basit bir toplama çıkarma işlemi yapan DLL oluşturup bunu C# ile haberleşmesini yapalım. Herhangi bir dizin üzerinde yine nim uzantılı bir dosya oluşturalım ben math.nim olsun istedim siz keyfinize göre bir isim verebilirsiniz. Daha sonra bu dosya içerisine aşağıdaki kodları girelim.
Kod:
proc Topla*(a, b: cint): cint {.exportc, cdecl, dynlib.} =
result = a + b
proc Cikar*(a, b: cint): cint {.exportc, cdecl, dynlib.} =
result = a - b
Daha sonra dizin üzerinde terminale şu komutu verelim.
Bash:
nim c --app:lib -d:release --out:math.dll math.nim
Ve DLL dosyamız başarıyla oluştu şimdi bunu C# üzerinde tanıtalım. Basit temelli olduğu için toplama çıkarma işlemi yapacak bu yüzden sayı girilmesi için iki adet textbox ve sonuçları göstermek adına iki adet label operasyonu devreye almak içinse bir adet buton ekledim. Oluşan DLL 'yi ise direkt tanıması için proje klasöründe yer alan bin dosyası içerisine attım.
C#:
public partial class Form1 : Form
{
[DllImport(
"math.dll",
EntryPoint = "Topla",
CallingConvention = CallingConvention.Cdecl)]
private static extern int NimTopla(int a, int b);
[DllImport(
"math.dll",
EntryPoint = "Cikar",
CallingConvention = CallingConvention.Cdecl)]
private static extern int NimCikar(int a, int b);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (!int.TryParse(textBox1.Text, out int sayi1) ||
!int.TryParse(textBox2.Text, out int sayi2))
{
MessageBox.Show("Lütfen iki geçerli tam sayı girin.");
return;
}
int toplam = NimTopla(sayi1, sayi2);
int fark = NimCikar(sayi1, sayi2);
label1.Text = "Toplama sonucu: " + toplam;
label2.Text = "Çıkarma sonucu: " + fark;
}
}
Şimdi projeyi derleyip çalıştıralım bakalım sonuç veriyor mu?
Görüldüğü üzere sonuç başarılı okuduğunuz için teşekkür ederim.
