Neden daha çok doğal dil programlama dili yok?


9

Birden fazla doğal dilde mevcut ve genişletilebilir programlama dilleri var mı?

Örneğin, bir do..whiledöngü olan bir İngilizce sürüm, bir döngü olan bir İspanyolca sürüm, bir ile hacer..mientasbir Fransızca sürüm ve bir faire..pendantile bir Hollandalı sürüm doe..terwijl.

Bu tür uygulamaları düşünebildiğim tek 'programlama dili' Microsoft VBA.

Bonus soru: Neden birden fazla dilde bu kadar az programlama dili var?


12
İngilizce, iyi ya da kötü, çoğu programlama dilinin Lingua Franca'sıdır.
Robert Harvey

13
That's a reason why the languages are in English, not why there are no other languages, for example no "Java Indonesian" or "C++ Swahili"- Java Endonezya programınız yalnızca Endonezya programcılar tarafından korunabileceğinden.
Robert Harvey

5
@DavidArno Bu konu, İngilizce konuşulmayan ülkelerdeki insanlar İngilizce kod yazıyor mu? ve buna bağlı birden fazla soru
gnat

8
@MartijnBurger "muazzam görev" olan standart kütüphaneyi çevirmeye kıyasla , anahtar kelimeleri çevirmek "küçük sorun" dur . Birlikte çalışabilirlik sorunlarına neden olan da budur. Java, derlendikten sonra anahtar kelimelerin yazılışına bağlı değildir; ancak paket, sınıf ve yöntem adlarının yazımına bağlıdır.
Dan Getz

3
@DanGetz hala Java'da (ve muhtemelen diğer dillerde) anahtar kelimelerin ayrılması sorunu var. Bir alanı String for;sınıfta verilen bir sembol olarak Java olarak tanımlayamıyorum . Bu da doeHollandalı versiyonda public class Deer { String buck; String doe; }olduğu ve doealanın erişilebilir olmasını sağlayamadığı için bir alanı adlandıramazdım. Tüm anahtar kelimeler Java'da ayrılmış kelimelerdir. Diğer dillerdeki anahtar kelimelerle çakışan alanlarda kötü şeyler olur.

Yanıtlar:


21

Excel formüllerindeki işlev adları yerelleştirilmiştir; burada İngilizce ifadeleri veya yerel eşdeğerini kullanabilirsiniz.

Bu, bölgeler ve kullanıcı dilleri arasında hareket ettikçe sayısız e-tablo kırılmasına neden oldu. Yerel belgeler yerelleştirildiğinden ve şeylerin İngilizce adlarından bahsetmediğinden ve tersine, yerel adlarınızla SO'ya sormak çoğu okuyucu için anlamsız olduğundan işlevsellik hakkında bilgi aramayı zorlaştırır.

Anahtar kelimeler, onları hecelemek için kullanılan İngilizce kelimelerin anlamları ile bir şekilde hizalanan opak takma adlar olarak görülmelidir. İngilizce konuşan olmayan programcılar, anahtar kelimelerinin yarısının ne anlama geldiğini bilmiyorlar.


5
Çevrilen formüllerin destansı başarısızlığı göz önüne alındığında, bu yanıtın "Excel" kelimesinin göründüğü tek yer olması şaşırtıcıdır. Her iki argüman da geçerli ve çok güçlü: elektronik tablolar bozuluyor ve yerelleştirilmiş sürümler toplulukları parçalıyor . Bu, satıcı tarafından dokümanları ve programları (derleyicileri) kendileri tercüme etme çabasını içermez.

1
Bir komut dosyasındaki anahtar kelimeleri çevirmek neden bu kadar zor? Şüphesiz, özel muamele gördükleri için ayrıştırılması nispeten kolay olmalıdır.
SuperBiasedMan

Ayrıca, İngilizce cümle yapılarını yürütülebilir programlara dönüştürmediği için Excel gerçekten doğal bir dil programlama sistemi değildir.
Anderson Green

16

Bir önceki yüzyılda, özellikle 1960-1970'lerde, İngilizce olmayan bazı programlama dilleri olmuştur. Fransa'da, Fransız görünümlü anahtar kelimeler içeren PAF ve LSE vardı . 2. Dünya Savaşı Almanya'da K.Zuze tarafından Plankalküll vardı . Sovyetler Birliği'nde A.Ershov bazı dilleri (mesela tasarlanmış Rapira Rus anahtar kelimelerle). IIRC PAF (bebekken - 1960'ların başında) rahmetli babam tarafından tasarlandı ve uygulandı) İngilizce görünümlü (veya Rusça görünümlü veya Almanca görünümlü) anahtar kelimelerle de satılabilir. Bazı dillerin, örneğin APL'nin hiç anahtar kelimesi yoktu. Diğer diller ( PL / I ) rezerve etmedianahtar kelimeler. Ve önişlemci teknikleriyle anahtar kelimeleri yeniden tanımlayabilirsiniz (örneğin bugün, C #define si ifve #define sinon elseFransız öğrenciler için ....; PL / I ve hatta Common Lisp'de benzer makro tabanlı hileler mümkündür).

Ama BTçoğunlukla İngilizce konuşulan bir ülkede (ABD) geliştirilmiştir. Programlama dilleri ve uygulamaları İngilizce spesifikasyon ve dokümantasyona ve İngilizce anahtar kelimelere sahipti. Bu nedenle, her geliştiricinin teknik İngilizce okuyabilmesi gerekir ve programlama dilini "yerelleştirmek" için hiçbir katma değer yoktur (ve hatta bunu yapmak, başka bir yerde yanıtlandığı gibi diğer yazılımları kullanmayı daha zor hale getirir). İngilizce konuşulan ülkelerin mevcut teknik ve ekonomik hakimiyeti tüm mühendislerin bugün İngilizce okumasını gerektirir (Kuzey Kore, Çin veya İran yazılım mühendislerinin bile İngilizce belgeleri okuyabildiğinden ve İngilizce anahtar kelimeler ve tanımlayıcılarla kod okuyabildiğinden eminim) . Bu nedenle, bir programlama dilini "yerelleştirmek" için yeterli katma değer yoktur (belki de lise çocuklarına ilköğretim programlamayı öğretmek hariç).

Ayrıca, İngilizce birçok kısa anahtar kelimelere sahiptir ( sinonFransızcadan elseİngilizceye veya mettreFransızcadan putİngilizceye karşılaştırın), bu nedenle İngilizce anahtar kelimeler kullanmanın küçük bir avantajı vardır.

Belki bir yüzyılda Çin baskın BT ülkesi olabilir ve Çin merkezli bazı programlama dilleri gelişebilir. O zaman ne olacağını bilmiyoruz ....

PS. İngilizce'nin baskınlığı BT'ye özgü değildir. İngiltere Avrupa Birliği'nden -Brexit senaryosu- ayrılsa bile , fiili resmi AK dili İngilizce olarak kalır (o zaman hiçbir AB üyesi ülkenin dili olmayacaktır) ve H2020 ICT projeleri İngilizce yazılır.


Plankalküll'ü unutmayın !
Erik Eidt

Teşekkürler.
Homofonik

Bilmiyorum, ama iptal ettim, bu yüzden şimdi (sadece ne yazık ki) nötr. İyi bir cevap buldum.
Mawg, Monica'yı

5
İngilizce, AB üyesi olan İrlanda Cumhuriyeti'nin iki resmi dilinden biridir.
Matthew Flynn

9

Profesyonel programlama dillerinin çevrilmemesinin çok iyi nedenleri vardır.

1) Çaba: Modern bir dili çevirmek muazzam bir görev olurdu. Java'yı ele alın - 50 ya da daha fazla anahtar kelimeyi çevirmek küçük bir görevdir, ancak binlerce sınıf ve yöntemden ve ilgili belgelerden oluşan tam standart kütüphaneyi de çevirmeniz gerekir.

2) Uyumluluk: Temel dil ve standartlar kitaplığı çevrilmiş olsa bile, hala çevrilmemiş üçüncü taraf kitaplıkları ve kodu kullanamazsınız. Üçüncü taraf kütüphaneleri ve kodu, bir dili çekici ve kullanışlı kılan şeyin önemli bir parçasıdır. Çevrilmiş sürümlerde, her dilin her çeviri için ekosistemi sıfırdan başlatması gerekir. Herkes daha kötü olurdu.

3) Programcılar yine de İngilizce bilmelidir. HTTP, CSS, HTML gibi birçok standart, tanımlayıcılar için yine de İngilizce dilini kullanır. Kelimeler standart haline getirildiği için bunlar çevrilemez.

Programcıların yine de İngilizce bilmesi gerektiğinden, sadece dezavantajlar olacaktır ve programlama dillerinin çevrilmiş sürümlerini oluşturmanın hiçbir faydası yoktur.

Bununla birlikte, profesyonel programcıların aksine sıradan programcılara yönelik diller için tercüme edilmiş sürümler oluşturmak mantıklı olabilir. Bu VBA için geçerli ve inanıyorum ki AppleScript tercüme edilmiş versiyonlarda da mevcuttu.


5

BASIC'in gerçekten eski ezoterik versiyonu dışında çok fazla garip iyilik yapma eğiliminde olan başka bir dil bilmiyorum, bu yüzden bonus soruya sadık kalacağım: neden bu kadar az çevrilmiş programlama dili var:

Derleyici ve kütüphane uygulayıcılarının büyük bir ihtiyaç görmedikleri ek bir karmaşıklık olduğuna inanıyorum. İşte bence katkıda bulunan bazı nedenler.

  • "Evrensel" bir dile bağlı kalmazsanız kodunuzun hedef kitlesini sınırlayacaksınız. Elbette, herkes İngilizce bilmiyor, ancak her dil için aynı şey geçerli.
  • Tek sözcük anahtar sözcükleri, ayrıştırmayı zorlaştıran tüm dillerde tek sözcük olmak zorunda değildir. Asla kontrol ettim ama c ++ 'ın tek çok kelimeli türü "uzun uzun" ile başa çıkmak için özel bir kasa adil bir miktar olduğunu hayal edebiliyorum.
  • Anahtar kelimeleri çevirmeye başlarsanız, yerel ayarları da dikkate alır mısınız ve sayılar nasıl biçimlendirilir? Örneğin, ondalık ayırıcı olarak virgül ve nokta. Veya Alman isimlerinin büyük harfle yazılmasını mı istiyorsunuz?
  • Belirli bir programdaki metnin büyük çoğunluğu yorumlardan bahsetmemek yerine değişkenler, yöntemler ve sınıf isimleridir. Diğer dillerde yazılmış kütüphaneler kesinlikle olsa da, tüm kullanıcılara hizmet etmek için tüm kütüphanelerin kaynak kod çevirilerini sürdürmek zorunda kalmak, çoğu geliştirici için bu tür kod etrafındaki tartışmalardaki ek karmaşıklıktan bahsetmemek için büyük bir yük olacaktır.
  • Derleyiciler uygulanan tüm dilleri anlamalıdır. Belki aynı dosyada birden fazla dil. Kesinlikle bir bilgisayar için küçük bir başarı, ama yine de ekstra çalışma. Belki de farklı dillerde farklı şeyler anlamına gelen aynı anahtar kelimeyle uğraşmak zorunda kalacaksınız, ya da terimler iyi okumak için çok belirsiz.
  • (tamam, görüşlü) Elbette, farklı dillerde programlanmış ve biçimlendirilmiş MS Office belgeleriyle uğraşmak zorunda kalan çoğu kişi, bu sorunu değmez gibi düşünecektir.

Şahsen kodla daha yapılandırılmış bir şekilde çalışabilseydik, kodu gerçekten ne olduğunu anlayan bir editörde, çok ilginç şeyler yapmamıza izin verecek ifadeler, talimatlar vb. , hatta otomatik çeviriyi bile destekler. Ne hakkında merak duyduğumu merak edenler için, Smalltalk'ın imajını ve yeniden düzenleme tarayıcısını kontrol edin ve daha fazla çekiş olsaydı ne olabileceğini hayal edin.


3

Bir düzeyde "sembolik etiketler" ve diğer tarafta "yüzey etiketi belirteçleri" olarak tanımlanan bir diliniz varsa, aralarında iyi tanımlanmış eşlemeler olması kesinlikle mümkün olacaktır.

Sahip olduğunuz bir dil düşünün sizin if, while... do, switchve standart (her nasılsa) tanımlanan tüm diğer anahtar kelimeler, olmayan simgeleştirilmiş formda yazılı yerel koduyla, "simgeleştirilmiş format" sistem kütüphanelerini gemi olabilir. Sonra gerçek derleyici tokenize katman üzerinde çalışır ve işler iyi olabilir.

Ancak, bu hikayenin tamamı değildir. Hala "standart kütüphane" olmayan bir yerden, fonksiyon isimleri ile arayüzlenmiş kütüphanelerin olduğu durumlarda sonuçlanırsınız. Ve bunlar diller arasında kanonik bir haritalamaya sahip olmayacak ve ya yerel bir dile güzelce kullanılabilir olmasını gerektirecek ya da kaynak kodunuzda bir dil karışıklığı ile sonuçlanacaksınız.


2

Verilen tüm cevaplar harika cevaplar, ama yine de iki sentimi vereceğim.

Hesaplamanın başlangıcında , ABD ve İngiltere'nin teknik, kültürel ve ekonomik hakimiyeti, İngilizce kelimeler kullanılarak en başarılı dillerin yaratıldığını mantıklı kıldı.

Daha sonra, yazılım bir endüstri haline geldikçe, küresel bir çaba haline geldi. Gerekenden daha az programcı olduğu bir sır değil, bu yüzden yazılım şirketleri ve IBM gibi endüstriyi tanımlayan şirketler dünyanın her yerinden programcı tutmaya başladı: Rusya, Pakistan, Hindistan, Fransa, Almanya, İsrail, vb. çoğunlukla zaten İngilizce tabanlı olan ve aynı zamanda yeni diller yaratan küresel olarak başarılı olan diller için programlamak ve bu farklı programcı kaynağı için zaten var olan ortak dil diğer dillerden daha iyi bir tercihti.

Son zamanlarda açık kaynak ve özgür yazılım hareketi , yazılımın oluşturulmasını öncekinden daha küresel bir çaba haline getirdi. Bazı programlama platformları, diller ve çerçeveler dahil olmak üzere bazı açık yazılım projeleri, yüzlerce ortak çalışanı içeren büyük projelerdir.

İsrail'den bir kişi Sri Lanka'dan biriyle işbirliği yapmak için hangi dili kullanırdı? Muhtemelen birbirlerinin ana dilini konuşmuyor hatta okumuyorlar. Yani İngilizce kurtarmaya geliyor.

İster beğenin ister beğenmeyin , İngilizce küresel çabaların dilidir . Ve Amerika onu ittiği için değil, dünya onu çektiği için.

Paraphrasing Jay Walker :

Ana diliniz her gün en çok kullandığınız dildir ve her zaman kalbinizin ve beyninizin merkezinde olacaktır, ancak İngilizce ile daha geniş bir konuşmanın parçasısınız.

"İngiliz Mania" videosuna bakın .

Sonuç olarak:

Farklı diller kullanan programlama dilleri var olmaya devam edecek ve icat edilmeye devam edecektir (grafik-token tabanlı Scratch gibi), ancak en azından öngörülebilir gelecekte, nispeten az olacaktır.


-2

İngilizce de "aksanlı" bir dildir, ayrıca ASCII'den farklı bir kodlamaya ihtiyaç duyan garip bir karakteriniz yoktur. İtalyanım ve bazen bir İtalyan klavye düzeni veya àèéìòù gibi aksanlı karakterler kullanırsam kodlama hatalarıyla karşılaşıyorum. Üstelik "else", "altrimenti" olarak çevrilir, "in" "dentro" dır ... bu sinir bozucu olur.


9
Bu dairesel bir akıl yürütme olsa da - ASCII standart karakter seti haline geldi çünkü İngilizce bilişimin ortak dili.
JacquesB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.