Önce kim async / bekledi?


21

Python, 2015'te 3.5'te asenkron / bekleyen yapıları ekledi. Javascript topluluğu, bazilyonlarca yıl boyunca ona doğru adımlar attı ve nihayet 2017'de yayınlanan ES8'deki taslağa çok benzer bir uygulama ekledi (Anladığımdan). Daktilo yazımı, eğitimsiz göze tam olarak js asenkron yöntemlerine benzeyen, 1.7 sürümünde 2015'te zaman uyumsuz yöntemler ekledi.

C # 2012'de async / beklemenin diğer tüm uygulamalarına benzeyen ve F # 'nin 2010'da F # 2.0'da tanıtılan farklı görünümlü asenkron iş akışlarına dayanan asenkron yöntemler eklendi. Bu, asenkron programlamada oluşturulan dilin bildiğim en eski örneğidir. - Eşzamansız / bekliyor çiftli C # ve eşzamansız akışlı F #.

Bu bağlamda dil yapıları (veya kütüphane) olarak kullanılan anahtar kelimelerin önceki örnekleri var mı? Sınırlı bilgilerimden herkes C # uygulamasının iyi bölümlerini taklit ediyor gibi görünüyor, ancak C # onu başka birinden kopyaladı mı?


3
Sadece async awaitbir programlama dilinde kelimelerin kullanımını arıyorsanız , bu oldukça yeni. Ama uyguladığı türden eşzamansız programlama async awaituzun zamandır var.
Robert Harvey

Yanıtlar:


27

Bir doğrultusunda kapsamınızı Asenkron Programlama hakkında Kanal 9 için Anders Hejlsberg röportajda async/await C # F # zaman uyumsuz worflows üzerine ilham almaktadır.

Bilmediğiniz takdirde, Anders Hejlsberg C #'ın baş mimarıdır ve TypeScript de dahil olmak üzere diğer dillerde de çalışmıştır.

Don Syme'a göre , blogunda F # async iş akışları, haskell için asenkron monad uygulamasından ilham alıyor. Özellikle Peng Li'nin makalesi ve Koen Claessen'in "Zavallı Adamın Eşzamanlılık Monad" makalesi .

Bilmediğiniz takdirde Don Syme, F # 'nın baş mimarıdır.

Koen Claessen'in makalesi, 1999 yılına kadar bulabildiğim sonuç ve sürekliliklerle operasyonların daha eski bir uygulamasıdır. Atomik işlemleri, süreklilikleri ve bir yuvarlak robin zamanlayıcıyı tanımlayarak eşzamanlılığı uygular. Monaid yaklaşım mesajın iletilmesinden beklenen sonuçlara geçişin motivasyonu olacaktır.

Haskell'deki eşzamanlılık için önceki çalışma, iletişim için bir tür kanal veya mesaj geçişi kullanır.


Önceki çalışmalardan bahsetmişken, "Zavallı Adamın Eşzamanlılık Monad" ın alternatif olduğu Eşzamanlı Haskell'den bahsetmek zorundayım ...

Mark P. Jones ve Paul Hudak'ın "Haskell'de Örtük ve Açık Paralel Programlama" makalesi . Bu makale Koen Claessen'in gazetesinin temelini attı.

"Haskell'de Örtük ve Açık Paralel Programlama" makalesinde Mark ve Paul, "çatal" ın özelliklerini ve eşzamanlılıktaki yan etkiler sorununu ve diğer şeyleri analiz etmişlerdir. Eşzamanlı ML'ye dayalı bir dizi eşzamanlı ilkel seçen ve sıralı yürütme özelliklerini koruduğuna dair bir kanıt sağlayan "ML eşzamanlılık ilkelleri için bir anlam" makalesine atıfta bulunurlar .


Bu gerçekten iyi bir cevap. Haskell & ML'den bahsettiğinize sevindim (her ikisi de F # ilham alıyor). Ben biliyorum sen “devam stili” bahsediyor Haskell millet duyarsınız. async / await sadece bu kavramın üstünde sihir / sözdizimi şekeri derleyicisidir.
RubberDuck

1

Microsoft'un zaten var olan kelimeleri almayacağına inanıyorum, bu yüzden kelimeler asyncve awaitatıfta bulunduğunuz zamanlarla ilişkilendirilebilir. Ancak, Coroutines ve Cooperative multitasking fikirleri çok eskidir.


2
Koroutinleri ve eşzamansız programlamayı karşılaştırmanın doğru olduğunu düşünmüyorum - çok farklı bir soyutlama türü sunuyorlar.
wondra

3
"Microsoft'un zaten var olan kelimeleri almayacağına inanıyorum" - Bu inanca dayanıyor musunuz? Başarılı dillerin tasarımcıları genellikle bundan daha pragmatiktir.
Sebastian Redl
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.