"Ne programlama dili olarak OCaml faydalarını olan" gerçekten görüşe dayalı bir soru, ve burada mücadele edecek değilim biridir. Ancak, ben Facebook'ta en Hack takımda çalışmak ve Akış ekibi ile yakın bir çalışma, bu yüzden Sana sormak amaçlanan düşünüyorum soruya cevap verebilir: "Neden Facebook Hack ve Flow inşa etmek OCaml seçtin?"
- büyük nedeni OCaml sonra pattern matching on them parlak defining your own datatypes için destek ve sahip olmasıdır. Hack ve Flow'un yaptıklarının çoğu, bir AST'nin çeşitli biçimleri üzerinde operasyonlar ve "bu tür bir düğümü bu tür düğümün içinde görüyorsanız, bunu yap" ifadesinin çok değerli olduğunu ifade etmenin gerçekten güzel bir yolunun olması. definition of subtyping in Hack'a bir göz atın - kesinlikle karmaşıktır, ancak kalbinde, bir çift tür üzerinde sadece büyük bir desen eşleşmesi vardır ve kalıp eşleşmesi olmadan herhangi bir dilde okunaksız bir şekilde karmaşık olacaktır.
- OCaml, birinci sınıf işlevler ve değişmez veri yapıları için büyük destek sağlayan büyük ölçüde işlevsel bir dildir. Eğer typechecking yapıyoruz Benzer şekilde yukarıda, sen haritalar farklı türde bir sürü yapıyor sonunda ve AST ağının üzerine katlanır ve fonksiyonel diller gerçekten kısaca belirtmektedirler. Örneğin, bir kod bloğu yazmak tam anlamıyla just a
fold_left
over the statements it contains'dur.
- Ancak, tamamen işlevsel değildir. Bu "impure" - bazen, mutable state, using exceptions, veya benzer bir şey ifade etmenin en güzel yoludur. Ancak en önemlisi, , herhangi bir karmaşık akrobasi veya zihinsel model anahtarına veya bir FFI aracılığıyla C işlevlerine çağrılacak herhangi bir şeye ihtiyacınız olmadığı anlamına gelir. Hem Hack hem de Flow, multithreading için aynı modeli kullanır: özel
fork
'd işlemleri arasında paylaşılan, kilitlenmemiş bir karma tablo içeren özel bir mmap
' d bölgesi. Bu, C - and that's exactly what we do hariç herhangi bir dilde ifade etmek istemediğim bir şey. OCaml kodu, kaputun altında gerçekte C olan bir sihirbaz olmaksızın birkaç sihir fonksiyonunu çağırabilir. (Bir kenara göre, Ocak ayından çoklu yayıncılığımızın tam olarak nasıl çalıştığını, Hack uygulamalarının diğer bazı bölümleriyle birlikte yapacağım bir teknoloji konuşması yapacağım - bu gerçekten harika, ama kodsuz olsa bile bir intro olmadan kavramak zor açık kaynak!)
Bu downvoted alma yüzden, ben görmüyorum iyi bir soru. OCaml'ı bilmiyorum, ama derleyiciler yazmak için harika bir araç olduğu söyleniyor (listene HaXe ekleyebilirim) ve [bu eski yazı] (http://flint.cs.yale.edu/cs421/case) -for-ml.html) (ayrıca bakınız [here] (https://news.ycombinator.com/item?id=3002838)) nedenini kısaca özetlemektedir. – georg
Çünkü temelde fikir temelli. –
@georg Sağladığınız bağlantılar gerçekten yararlıdır. Onlar OCaml hakkında tartışmalı yorumlar içerir. – Supasate