Python'ı Türkçeleştiriyorum

Selamlar,
Python temelli, Türkçe bir programlama dili oluşturuyorum. Diğer bir deyişle Python ı Türkçeleştiriyorum.

Bu konuda fikirlerinizi duymak isterim.

Detaylar için Github sayfası; https://github.com/surkdili/surk

Örnek kod parçası şu şekilde;

kullanıcı_ismi = oku("Kullanıcı isminizi giriniz:")
yaş = oku("Yaşınızı giriniz:")
yaş = tamSayı(yaş)
yaz( kullanıcı_ismi, "isimli kullanıcı" , yaş , "yaşındadır.")

eğer kullanıcı_ismi == "Ahmet" ise:
	yaz("Kullanıcı ismi Ahmet'miş.")
değilse:
	yaz("Kullanıcı ismi Ahmet değilmiş.")

yaş_sayacı = 0
yaş_sayacı < yaş olduğu sürece:
	yaz("kullanıcı" , yaş_sayacı , "yaşından büyüktür.")
	yaş_sayacı += 10
3 Beğeni

Merhaba.

Readme dosyasında şöyle bir şey geçiyor:

Yazılıma başlayan kişilerin yazılım öğrenmeden önce İngilizce öğrenme zorunluluklarını ortadan kaldırarak…

Yazılım sadece bu geliştirdiğiniz dilden ibaret değil ki. Yazılım dünyasının her yerinde İngilizce kullanılıyor. Bütün dillerin, kütüphanelerin belgeleri İngilizce yazılmış; insanlar yıllardır karşılaştıkları sorunları İngilizce sormuş ve bu sorunlar İngilizce cevaplanmış. Anladığım kadarı ile bu dil Python’a derlenerek çalışıyor, bunun yerine Python ve kütüphaneleri için Türkçe belgeler oluşturmanız veya var olan belgelere katkıda bulunmanız daha mantıklı olmaz mı?

Bir de şöyle bir şey geçiyor:

Türkçe, ürün oluşturma odaklı, web&mobil&masaüstü desteği planlanan programlama dilidir.

Web ve mobil kısmını nasıl yapmayı planlıyorsunuz merak ettim, CPython’un böyle bir desteği yok.

5 Beğeni

Python’un Python dilinde oldugu yerler Turkcelesmis. Ingilizce dilinde oldugu yerlerin Turkcelesmesi daha onemli: Python Documentation contents — Python 3.12.1 documentation

1 Beğeni

Selamlar,
Yazılımda, bilgiyle ilgili olan her alanda olduğu gibi İngilizce elbette önemli.
Ancak yazılıma başlamak için bir ön şart olmamalı. Bu durum, anadili İngilizce olan kişilere karşı ciddi bir dezavantaj oluşturuyor.
Yazılım öğrenirken eşzamanlı olarak İngilizce öğrenmek, yazılıma başlamadan önce öğrenmek zorunda olmaktan daha verimli olacaktır.
Yani buradaki odak noktamız hayattan İngilizceyi tamamen çıkartmak değil, sadece bir bariyer olmasını engellemek. Zaten paylaştığınız metnin devamında da İngilizceden tamamen kurtulmak değil, İngilizce kaynaklı handikapları olabildiğinde azaltmaktan bahsediliyor ; “…üzerimizdeki dil kaynaklı handikapları en aza indirmek amacıyla…”

Türkçe belge oluşturmanın faydası konusunda şüpheliyim. Dediğiniz gibi, tüm sorular ve cevaplar İngilizce ve bu soru-cevaplar yazılmış kaynaklara göre çok çok daha büyük. Türkçeleştirdiğimiz kaynak hem her zaman yetersiz kalacaktır, hem de hep arkadan geldiği için demode olacaktır, güncel bilgiyi bu şekilde sunamayız.

Kivy ile sunmayı planlıyorum.

Selam,
Hayır değil.
Burası bir edebi metin değil, basit kısa cümleler içeriyor ve gerekirse burası Google Translate ile anlaşılır.

1 Beğeni

Türkçeleştirmeye çalıştığınız Python’un keyword’leri çok basit kelimelerden ibaret.

Türkçeleştirmeye çalıştığınız kütüphanelerdeki fonksiyon ve sınıf isimleri basit ve tekrar eden sayılı İngilizce kelimeden oluşuyor.

Türkçeleştirmeye çalıştığınız dilin kütüphanelerinin belgelerine karşı “basit kısa cümleler” diyorsunuz. Bu projenin çıkış noktası ile çelişmiyor mu?

Zaten kütüphanelerin belgelerini Türkçeleştirmeden içerdikleri fonksiyon ve sınıfların ismini Türkçe yapmak anlamsız.

Bu sadece mobil kısmını cevaplıyor, web nasıl olacak?

3 Beğeni

Türkçe kaynak oluşturman daha faydalı olabilir,ama yinede Senin Kararın.

1 Beğeni

Neden Türkçeleştirmeye çalışmak yerine basit bir programlama dili geliştirmiyorsunuz?

5 Beğeni

aslında zaten yeni bir dil geliştirmiş

Ekrem Bey, hayır çelişmiyor.
Basit İngilizce ile anadil farklı şeyler. Anadil demek, sizin yaşadığınız dünyayı öğrendiğiniz dil demektir. Dünyayı algılamada ve tarif etmede birincil rol oynar.

“İngilizcesi basit ise Türkçesine gerek yok” şeklinde düşünüyor olabilirsiniz, saygı duyarım. Ben bu şekilde düşünmüyorum. Öğrenmek isteyen insanların üstünden kaldırdığımız her bir gram yük kardır.

Selamlar,
Yeni dil geliştirmek zor değil ancak ortaya ürün çıkartabilmek için bazı temel şeyleri implement etmek gereklidir. Örneğin http modülü olmayan bir kodlama dili ile ortaya ne çıkartabilirsiniz ki?
Python üzerinden ilerme sebebimiz Python ın tüm gücünü kullanmak.

@Emerald_Gamer Evet, aslında tüm keywordler ve çoğu yazım şekli değiştidğinden bunu farklı bir dil olarak ele alabiliriz. Yalnızca derleyici kısmında lexer benzeri yapıları kullanmıyoruz.

Python’ın tüm gücünü kullanmaya çalışacak insanlar bırakın “yaz” yerine “print”, “eğer” yerine “if” yazsın. Bunun için ultra ingilizce bilmeye gerek yok. Ben de algoritma bilmeyenlere kolaylık olsun, anlaşılır olsun diye geliştirdiniz sandım.

Yukarıda da denildiği gibi madem başladınız Türkçeleştirmeye, o zaman tüm modülleri, kütüphaneleri Türkçe yapın, ama siz onlar basit kelimeler google translate ile okunabilir diyerek kendinizle çeliştiniz.

Fikirlerimizi sormuştunuz, benim de fikrim bu.

4 Beğeni

Şimdi bir kullanıcı bir fonksiyon hakkında bilgi almak için help mi kullanmalı yardım mı? Çünkü denediğimde yardım diye bir fonksiyonun tanımlanmamış olduğunu görüyoruz.

Mesela yaz kullanılabiliyor, ama help(yaz) yazınca NameError hatası alıyorum. Demek ki yaz vs vs… bunlar tanımlı değil.

Hataya bakıyorum ve şu ifadeyi görüyorum.

    exec(yazilimKodlari)

Şimdi mesele daha iyi anlaşılıyor. Siz ne yeni bir dil oluşturmuş, ne de Python’ı Türkçeleştirmiş oluyorsunuz. Sadece exec'e yazılan karakter dizileri daha önce anahtarKelimelerEşleri listesinde yer alıyorsa, bu karakter dizilerini kullanarak bazı işlemler yapılmasını sağlıyorsunuz.

Ayrıca Türkçeleştirdiğiniz her bir parça için Yardım fonksiyonlarını da oluşturmanız gerekiyor. Exception'lar Türkçeleştirilmeli… Bunları yapmadığınız sürece “Python’ı Türkçeleştirdim” diyemezsiniz.

Mesela şu örneğe bakın:

yaz("hello", end="")

end parametresi neden Türkçeleştirilmemiş? Python’ı sizin uygulamanızla öğrenmeye çalışan birisi yaz'ın hangi parametrelere sahip olduğununu nasıl öğrenecek? help(print) mi yazacak? İngilizce kaynaklara dönüp ne neymiş öğreneceksek neden Türkçe Python geliştiriyoruz?

Bu arada sadece aşağıdaki listede yer alan ifadeler Türkçeleştirilmiş. Ama yukarıda dediğim gibi print tamamen Türkçeleştirilememiş. Ayrıca listede yer alan fonksiyonların parametreleri ve tiplerin de metotları İngilizce.

anahtarKelimelerEşleri = """
[
	[
		"oku",
		"input"
	],
	[
		"fonk",
		"def"
	],
	[
		"ve",
		"and"
	],
	[
		"veya",
		"or"
	],
	[
		"değilse",
		"else"
	],
	[
		"herbir",
		"for"
	],
	[
		"içinde",
		"in"
	],
	[
		"ekadar",
		"range"
	],
	[
		"döndür",
		"return"
	],
	[
		"yanlış",
		"False"
	],
	[
		"doğru",
		"True"
	],
	[
		"iken",
		"while"
	],
	[
		"tamSayı(",
		"int("
	],
	[
		"metin(",
		"str("
	]
]
"""

Daha dilin % 99.9999’u İngilizce. Ve Python’ın “tüm güçleri” henüz maalesef kullanılamıyor.

6 Beğeni

Zamanın birinde autocad öğrenirken başıma gelmişti aynı durum. Bir süre İngilizce kullandıktan sonra Türkçe yama bulmuştum. Fakat nedense ısınamamıştım. Arkadaşların da dediği gibi programlama öğrenmek istiyorsanız giriş seviyesinde de olsa İngilizce bilmeniz şart. Aslında giriş seviyesi bile denemez. Örneğin ‘Print, for, if, else’ gibi standart sayıda çok az kelimenin manasını bilmek yeterli başlangıç için. Hiç bilmediğimizi varsayalım zaten google translate var.

‘Tükçe yazılım dili’ mantığı İngilizce konuşulan bir ülkede yaşayıp “ben İngilizce öğrenmeyeceğim” demek gibi.

Aslında önemli olan İngilizce veya yazılım dilini bilmek de değil. İsterseniz oturup python un bütün kodlarını ezberleyin. Önemli olan algoritma geliştirmek, kodlar, fonksiyonlar, sınıflar arasında ilişki kurmak.

Bunu başarabilmenin en gerçekçi yolu somut hedefler koymak ve tam olarak kafa yormak.

Fakat belirtmeden geçemeyeceğim konu başlığı gerçekten iddialıydı. Farklı bir fikir. Hiç aklıma gelmemişti.

1 Beğeni

Selam, elbette Python ın tüm güçleri henüz kullanılamıyor. Daha 0.0.3 sürümündeyiz.Dökümanda zaten kullanabilecekleriniz belirtilmiş.

Ayrıca yapılacak listesi Trello üzerinden de paylaşılmış vaziyette.

Aldığınız hataların sebebini söyleyeyim; yazdığınız bu kodlar zaten Surk 'un kaynak dosyasında yok. Henüz yapılmamış kısımları yazıp “bu neden çalışmıyor” demişsiniz, e cevap basit; henüz yapılmadı çünkü :slight_smile:

Arkadaşlar, döküman yazılır, yeni parametreler tanımlanır. Bunlar zamanla olacak şeyler. Henüz ilk sürümlerdeyiz.

bu karakter dizilerini kullanarak bazı işlemler yapılmasını sağlıyorsunuz

İşte bu işlemleri ismi transpiling, programın da “source to source transpiler” olduğunu belirtmiştim zaten. Farklı bir ismi varsa duymak isterim?

‘Tükçe yazılım dili’ mantığı İngilizce konuşulan bir ülkede yaşayıp “ben İngilizce öğrenmeyeceğim” demek gibi.

Bu çok talihsiz bir tablo. Açıkcası bunun böyle olmasını istemem.

Aslında önemli olan İngilizce veya yazılım dilini bilmek de değil. İsterseniz oturup python un bütün kodlarını ezberleyin. Önemli olan algoritma geliştirmek, kodlar, fonksiyonlar, sınıflar arasında ilişki kurmak.

Doğru, buna katılıyorum.

Genel olarak geri dönüşler “hayır bunu yapma” ya da “sen şöyle şöyle yapmışsın” şeklinde. Hiç soru yok. Hiç tavsiye yok. Geri dönüşte bulunan arkadaşlara teşekkürler.

İzlediğiniz yöntem yanlış, sanırım ona dikkat çekilmek istenilmiş. Kodu satır satır işlemek yerine tam bir syntax çıkartıp lexer yazmanız lazım. Oluşturacağınız dilin syntax’ı ile Python’unki farklı olduğu için bir parser de yapmanız lazım yoksa kullanıcıya yaptığı sözdizimi hatalarını gösteremezsiniz.

Ayrıca builtin fonksiyonların isimlerini syntax’ın bir parçası gibi değerlendirmeniz yanlış, exec’e ikinci parametre olarak {"__builtins__": {"yaz": print}} gibi bir şey yazmanız lazım. Daha bu fonksiyonların __name__ nitelikleri var. Bu niteliğin değeri "yaz" mı olacak "print" mi, __name__ yerine __isim__ kullanılacak mı, str sınıfının methodları nasıl Türkçeleştirilecek mesela? str’yi miras alıp yeni bir sınıf kullanmaya karar verdiniz diyelim, metod isimleri Türkçe ise standart kütüphane ile nasıl uyumlu olacak? Eğer bunun gibi her ayrıntıya dikkat etmezseniz ortaya nasıl çalıştığı belli olmayan, yarısı Türkçe yarısı İngilizce bir dil çıkar.

Buna cevap almadım.

1 Beğeni

bence bu çalışmayı çocuklar için çok basitleştirilmiş Türkçe bir eğitici program olarak geliştirebilirsiniz bunun dışında Türkçe bir programlama dilinin çok iş görucegini düşünmüyorum

Ben Python öğrenirken print’in yazdır demek olduğunu sonradan öğrenmiştim. :rofl:

Bende C++ ile şöyle bir şey denedim saçma ama keyifli preproccesor ile oynamak :stuck_out_tongue_closed_eyes:

C++ da preproccesor ü öğrenince ben (temsili)

#include <iostream>
#define program_bitti return 0;
#define tamsayi int
#define ana main(){
#define son }
#define YAZDIR(str) std::cout << str;
#define yenisatir std::endl;

tamsayi ana
    
    YAZDIR("Selam Dünya!")
    YAZDIR(yenisatir)
    
    program_bitti
    

son

kod çalışıyor buarada :rofl:

1 Beğeni

En son bildiğin kadarıyla bu konuda SUA gelistiriliyordu Türkçe olacaktı ama sanırım tamamlanamadi ya da ara verildi. Yapılmaya calisilan sey gercek anlamda kolay olmayan bir is, bende Türkce kaynak taraftariyim ama ortada bir gercek var ingilizce kaynak ve aciklama oldugu kadar hic bir dil icin Türkce kaynak yeterli olmuyor. Bir dili bu şekilde revize etmek baslı basına bir iş ve gerçekten cok zor bir süreç umarım istediginizi basarabilirsiniz. İngilizce bilgisi olarak da cok yüksek seviye bilgi ihtiyacı oldugunu düsünmüyorum A1 A2 dil seviyesi yeterli olabiliyor diye düsünüyorum tabi ki b1 b2 c1 c2 seviyesinde bilmek her zaman avantaj ama öğrenmek isteyen icin dil bilmemek bir bariyer değil diye düsünüyorum dökümanları translate ile cevirip bile en azından bilgi edinebilmek mümkün.