7

Bir dili bir tercümana çevirmek mümkün mü?Bir dili başka bir dile çevirin?

quercus'un php'yi java'ya çevirebileceğini duydu mu? İlk başta, kod hataları verebilecek ucuz bir berbat çözüm olduğunu düşündüm, ama bunu yapmak tamamen mümkün görünüyor.

php'yi python veya ruby ​​gibi başka dillere çevirebilir misiniz? C++ java ve benzeri?

+0

Sen berbat ama çalışma çözümler üreten bir ucuz berbat bir çözüm olabilir. Genel bir kural olarak, kolay bir şekilde dubalar arasında çeviri yapamazsınız ve berbat temel makineleriyle iyi bir iş yapamazsınız. –

+0

Bir standart kötü yanıt, "orjinal dili, orijinal dillerin semantiklerini simüle eden bir hedef langauge kütüphanesindeki çağrılara çevir"; Aslında bir tercüman buluyorsun. Bunu her zaman yapabilirsin; bir Turing makinesi her zaman diğerini öykünebilir. Ancak, bu tür çevirilerin sonucu genellikle okumak için oldukça korkunçtur, hedef languge'yi hedef-dil eğitimi almış olan kişilerin beklediği şekilde kullanmaz ve çoğu zaman üst düzey yükler (tüm bu simülasyon çağrıları) önyükleme yapar. Yani, bunu her zaman yapabilirsin, ama yapmamalısın. –

cevap

11

Bir dili diğerine çevirmek, derleyiciler, tercümanlar ve çevirmenler olarak adlandırılan program sınıfı için özel bir durumdur. Bu program sınıfı, genellikle resmi bir dilbilgisi tarafından tanımlanabilen ve bir sembol akışı sağlayan bir giriş sembolleri akışı ("kaynak kodu") alacaktır.

semboller çıkış akımı olabilir, yani: genellikle makine çalıştığı işletim sistemi ve donanım

  • Ana montaj kodu. Eğer öyleyse, program bir derleyici olarak adlandırılır;
  • Farklı bir işletim sistemi ve/veya donanım için yerel montaj kodu. Bu bir derleyici olarak da adlandırılabilir, ancak genellikle bir çapraz derleyici olarak adlandırılır;
  • Bir tür sanal makine tarafından yürütülebilen bir ara form için. Bu gerçek bir derleyici değil, ancak genellikle derleyici olarak adlandırılır. Java, C#, F #, VB.NET, vs "derleyiciler" hepsi bu kategoriye girer;
  • Tamamen başka bir dile. Bu bir çevirmen denir ve Java, C# çevirmenlerinin örnekleri vardır. Genellikle değişken derecelerde başarıya sahiptirler, çünkü deyimler genellikle kolayca çevrilemezler;
  • Tercümanlar aynı ilkeyi izler, ancak işlenmiş formu bir yere kaydetmek yerine genellikle yerinde yürütürler. Perl, PHP ve kabuk betikleri hepsi bu kategoriye girer. Örneğin PHP, bir opcode önbelleğinde bir opcode önbellek içinde bir ara form olarak depolayacaktır (eğer opcoding önbelleğe alma etkinse) fakat bu ara form saklanmamaktadır, bu yüzden PHP'yi bir tercüman olarak çağırmak hala güvenlidir. SO bazı göstericiler için "transpiler" için
+0

Önerebileceğiniz bir kitap, ders veya örnek var mı? Basit bir – lostmylogin

5

Sorun, iyi çeviri yapamayan deyimleriniz olduğunda veya arasında. Sözdizimsel olarak geçerli olan bir kod alırsınız, ancak asideki bir kişi tarafından yazılmış gibi görünüyor.

+0

1 asit için hehe –

+0

ama? :) inşaat – ajsie

+0

ne kadar hızlı veya iyi, ama emin kanıtı olamaz. –

2
+2

+1 bile, daha önce transpiler terimini hiç duymadım. Cehennem gibi cılız, ama bilmek faydalı. –

+0

-1, tranlation araçları uzun bir süre inşa ettim ve sadece "translator" yerine "transpiler" veya "transcoder" gibi bazı screwball terimlerini duyduğunuzda, cevabın kendisi "screwball" ve gerçekten iyi bir çözüm değilse hiç işe yaramıyor. Baktığım kişiler aslında cevaplar üretiyorlar, ama sadece cevabınız ile "çevirmek ve koşmak ve sürdürmek için açık bir kabus" demek. JOBOL üreten NACA tartışma bakınız: http://stackoverflow.com/questions/1029974/experience-migrating-legacy-cobol-pl1-to-java/1061829#1061829 –

+1

Bu eğitimde olmadığını Maalesef; öğretmenlerim bu terimi bana öğretti. –