SORU
3 Ocak 2010, Pazar


Nasıl durumlar bu başlık altında uygulanır?

Herkes onları kullanır sadece, ama çok, sadece benim için kabul dahil olmak üzere, sadece çalışma izni.

Yüksek kaliteli malzeme arıyorum. Ben kullanmak diller: Java, bu en çok C, C#, Python, C , beni ilgilendiren.

Şimdi, C muhtemelen o dilde bir şey atabilir beri başlamak için iyi bir yerdir.

Ayrıca, C Meclisi bulunur. Nasıl bir istisna saf C yapıları ve montaj kullanarak taklit eder?

Son olarak, Google çalışanları, bazı projeler için özel durumlar hızı nedenlerle kullanmayan bir söylenti duydum. Bu sadece bir söylenti mi? Nasıl bir şey önemli onlar olmadan gerçekleştirilebilir?

Teşekkür ederim.

CEVAP
3 Ocak 2010, Pazar


İstisnalar sadece yerel olmayan Gelişmiş Akış kontrol yapıları daha genel bir durum, belirli bir örnek. Diğer örnekler:

  • bildirimleri(aslında biraz eski Lisp object system, şimdi örneğin CommonLisp ve Şaka uygulanan istisnalar bir genelleme,),
  • devamı(**0, yüksek düzeyde popüler, üst düzey diller daha yapılandırılmış bir form),
  • coroutines(altprogram bir genelleme, özellikle Lua popüler,
  • jeneratörlerPython (aslında coroutines kısıtlı bir form) à la
  • lifleri(hafif işbirliği konuları) ve tabii ki zaten bahsetti
  • GOTO.

(Özledim diğerleri vardır eminim.)

Eğer varsa . bu yapıları ilginç bir özelliği ifade gücü kabaca eşdeğer olmasıdır: ^em>biroldukça kolay Diğerleri oluşturabilirsiniz.

En iyi özel durumlar uygulamak nasıl yani, diğer yapılar kullanılabilir ne bağlıdır:

  • Her CPU GOTO, her zaman eğer eğer şu anda geri düşmek, bu nedenle vardır.
  • C setjmp/longjmp hangi temelde MacGyver devamı (inşa edilen kanal-bant ve kürdan değil, oldukça gerçek bir şey, ama en azından seni derhal sorun yoksa daha iyi bir şey kullanılabilir).
  • JVM ve CLİ var istisnalar kendi anlamına gelir eğer istisna semantik dili Java/C#'s, sen eve ücretsiz (ama eğer değilse, o zaman sen berbat).
  • Özel durumlar ve devamı olarak Parrot VM.
  • Windows dil uygulayıcıları üstüne kendi özel durumlar oluşturmak için kullanabileceğiniz özel durum işleme için kendi çerçevesi vardır.

Çok ilginç bir senaryo, hem dekullanımıözel durumlarveuygulamaözel durumlar Microsoft Live Lab Volta Projesi. (Şimdi kapanmış.) Volta amacı, bir düğmeye basarak Web uygulamaları için mimari düzenleme sağlamaktır. İşte bu yüzden sadece [Browser] [DB] öznitelikleri bazı koyarak iki veya üç katmanlı bir uygulama içine tek katmanlı web uygulama çevirebilirsin .NET kod, o zaman otomatik olarak yüklenecektir DB istemci veya çalıştırın. Bunu yapmak için,.NET kodu çevrilmesi için kaynak kodu, JavaScript, kesinlikle vardı.

Şimdi, senolabilirsadece JavaScript tüm VM yazma ve bayt kodu değiştirilmemiş çalıştırın. (Temelde, C CLR JavaScript için bağlantı noktası.) Aslında bu (HotRuby VM örneğin bir proje var, ama bu verimsiz ve diğer JavaScript kodu ile birlikte çok hem de.

Yani, bunun yerine, CIL bayt kodu derleme yapan bir derleyici kaynak kod JavaScript mektup yazdılar. Ancak, JavaScript bazı özellikleri eksik .NET olan (jeneratör, iş parçacığı, aynı zamanda iki istisna modeller 100% değil uyumlu değil), ve daha da önemlisi derleyici yazarların bazı özellikleri yoksunaşkve o yukarıda belirtilen eksik özelliklerini uygulamak için kullanılabilir (GOTO ya devamı).

Ancak, JavaScriptyokistisnalar var. Yani, kullandılarJavaScript Özel Durumlaruygulamak içinVolta Devamıve sonra kullandılarVolta Devamıuygulamak için.NET İstisnalar,.NET Jeneratörve hatta.NET Yönetilen iş Parçacığı(!!!)

Asıl sorunun cevabı:

Nasıl durumlar bu başlık altında uygulanır?

İstisnalar dışında, ironik! En azından çok özel bu durumda, her neyse.

Başka büyük örnek, özel durumlar kullanarak Goroutines (eşzamanlı coroutines karışımı gibi bir şey CSP işlemler ans) uygulayan Gidip e-posta listesi, istisna önerilerden bazıları. Yine bir başka örnek Monadlar, tembel değerlendirme, tail call optimizasyonu ve İstisna uygulamak için üst düzey fonksiyonları kullanan Haskell. Bazı modern İşlemciler de özel durumlar (örneğin, özellikle Azul Sistemleri Java için tasarlanmış Vega-3 CPU Hızlandırıcı Hesaplamak için temel yapı taşlarını destekler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013
  • Tinkernut

    Tinkernut

    28 Aralık 2006