Python ve Grammarly

Aklımda bir fikir var. Eminim benden önce başkalarının aklına gelmiştir ama bitmiş ürün haline getirip satan yok sanırım. Araştırdım, bulamadım.

Grammarly online İngilizce dilbilgisi ve yazım denetimi uygulaması. Örneğin “improve” yerine “imprve” yazdığınızda hatayı gösteriyor ve bir tıkla düzeltiyor.

Aynı mantıkla Python için bir çözüm bulunursa Grammarly kadar popüler olur ve çok satar. Böyle bir yazılım neden yok?

İngilizce’de imprve geçersiz bir kelime olabilir ama Python’da bu geçerli bir değişken ismi. Daha anlamlı bir örnek rica edeceğim.

Kodu yürütmeyi denediğinizde yapılan sözdizimi hatalarını Python size söylüyor zaten, bunu siz daha kodu yazarken otomatik olarak yapan IDE ve eklentileri de var.

1 Beğeni

Örneğin

if keyboard.is_pressed(“o”):

“keyboard” yerine “keybard” yazdığımda Grammarly gibi “keybard” kelimesinin üzerine tıklayıp “keyboard” olarak düzelten bir IDE ve eklenti hiç görmedim. Bulamadım.

Değişken isimleri geçerli İngilizce kelimeler olmak zorunda olmadığı gibi çoğunlukla İngilizce kelimelerin kısaltması oluyor. Siz bütün değişken isimlerini uygun bir İngilizce kelime olarak seçmek istiyorsanız zaten Grammarly’i bunun için kullanamaz mısınız?

1 Beğeni

Evet o zaman sorun olurdu. Yine de kafa karıştırıcı olmazdı çünkü Grammarly uygulamasında kelimeleri otomatik düzeltmiyor. Kelimenin üzerine tıklayınca liste çıkıyor ve o listeden seçiyorsunuz.

“keybord” yazınca “keyboard” kelimesini önerecek bir eklenti yok. Örneğin daha önce hiç kullanmadığım bir kütüphaneyi öğrenmeye başlayınca bunun eksikliğini hissediyorum. İnternetten o kütüphaneyle ilgili yazıları okumak zorunda kalıyorum.

Google Translate vb. servislerin olmadığını düşünün. İşte python da öyle hissediyorum. :expressionless:

Tamam, şimdi daha anlamlı oldu.

O zaman bunun herhangi bir konuşma dile ile değil, kodun işlevi ile alakası var. Peki hem keyboard’ı import eder hem de keybord diye bir değişken tanımlarsak ne olacak?

Eğer keybord tanımlanmadığı halde kullanılmışsa Python bizi bundan bir runtime error ile haberdar ediyor zaten.

1 Beğeni

Pycharm yazım yanlışlarını algılıyor, ingilizce için.

1 Beğeni

Bir değişken ismini herhangi bir componentin textine yazarsak herhangi bir sorun yaşamayız çünkü " ve " arasında yazarız.IDE’ler kullanıcının istediğini daha verimli bir şekilde yazması için tasarlanmıştır.Ancak sizin dediğiniz Firefox’ta olursa çok iyi olur.Hatta aynısını tartıştığım kişilere sormuştum.“Klavye Yazım Kontrolcüsü”.Ancak ne dediklerini hatırlamıyorum ve başlamadan bitirdim.Haftalar geçti ve aslında olabilir dediler.Oysa Edge’in yeni sürümünde bu dediğimi kullanmaya başlamışlar.Aslında çok kullanışlı bir özelliği Samsung’a satsaydım ve her ürün başına 1$ alsaydım ne kadar güzel olurdu,değil mi?

1 Beğeni

Şöyle eklenti yazılabilir.

import autoit yazdıysam, autoit kütüphanesindeki komutları kullanacağım demektir. Eklenti de sadece autoit kütüphanesindeki komutlarla yazdığım kelimeleri karşılaştırır ve Grammarly gibi çalışır.

Bu eklentinin internet bağlantısına da ihtiyacı olmaz. Bilgisayardaki kurulu autoit kütüphanesindeki kelimelerle benim yazdığım kelimeleri karşılaştıracak.

Başka kütüphaneler eklersem onları da kontrol eder. Bu sayede eklenti daha hızlı ve daha doğru çalışır. Böyle eklenti yazılırsa çok işime yarar. :smile:

Python reflection’a sahip olduğu ve değişkenler dinamik olduğu için bunu tam olarak yapmak mümkün değil.

Eski mesajınızı düzenlemek yerine yeni cevap yazarsanız daha iyi olur, böyle anlam karmaşası oluyor.

Bunun için eklentiler var. Bir tane örnek vermem gerekirse Kite.

1 Beğeni

Kite aylardır yüklü. Anlattığım gibi çalışmıyor.

Örneğin kodlarımda “coords[0]” yerine kelimeyi bir harf kısaltınca Kite bir uyarı vermiyor. “exit()” yerine “eit()” yazıyorum, düzeltme önerisi yok. Ama Grammarly kullanırken ingilizce bir kelimeyi yanlış yazınca düzeltme önerisi gösteriyor.

Şurada python ile spelling corrector yazılmış: https://norvig.com/spell-correct.html, belki faydası olur

2 Beğeni

Eğer gerçekten istiyorsanız,proje olarak istediğiniz bir şeyi yapmayı deneyebilirim.

1 Beğeni

Program eit’e gelene kadar builtin’lerin modülden silinme olasılığı bile var. Eğer bir değişkenin belli bir noktada var olup olmadığını bilmek istiyorsanız kodu o noktaya kadar çalıştırmak zorundasınız.

1 Beğeni
__import__("sys").modules[__name__].__dict__.__setitem__("eit", print)
del __builtins__.exit
eit("merhaba")
exit()

Mesela yukarıdaki kodun eit("merhaba") kısmına geldiğinde eit adlı bir değişkene sahip olacağını ama exit adlı bir değişkene sahip olmayacağını bilmenin tek yolu kodu çalıştırmak. Böyle sihirli özellikler yüzünden Python’da statik analiz yapılamıyor. Ama bu istediğiniz şey statik tipli dillerde yapılabilecek, hatta çoğu modern IDE tarafından yapılan bir şey.

Söylediğiniz Python’da da bir yere kadar yapılıyor ama eksikleri olması dilin yapısı yüzünden kaçınılmaz.

2 Beğeni