Düşünmediğim başka tuzaklar var mı?
Uygulamada, insanların yaptığı ana hata, iş için yanlış bir araç olduğu problemler için F # kullanımını zorlamaya çalışmaktır.
Ya da bahsettiğim tuzakları reddetmek isteyen var mı?
Hepsi açıkça belli bir dereceye kadar geçerli kaygılar ama ne derecede sorgulayacağım.
Örneğin, F # kodu üzerinde çalışmak için herkesin F # öğrenmesi gerektiğini söylüyorsunuz. Doğru olmasına rağmen, pratikte bu büyük bir olay değil. F # öğrenmek, WPF, Silverlight veya TPL öğrenmekten daha önemli değildir. Şu anda Londra'daki bir müşteri için F # 'nın nasıl kullanılacağını 30 geliştiriciye öğretiyorum ve yaklaşık bir düzine birkaç hafta sonra F # kodunda tam gün çalışıyorlardı ve ilk ürünlerini (zamanında ve bütçe dahilinde) gönderiyorlardı! ) sadece birkaç ay sonra neredeyse tamamen F # ile yazılmış. Aslında Silverlight ile F # 'dan daha fazla teknik güçlük çekiyorlardı ve Silverlight için teknik desteğin F #' dan çok daha kötü olduğunu gördüler.
Mevcut F # programcılarının nispeten küçük havuzuna atıfta bulunuyorsunuz, ancak yine de, F # almanın ne kadar kolay olduğu göz önüne alındığında, bunun önemli bir endişe olduğunu düşünmüyorum. Varsa, birçoğunu işe almanız gerekeceğinden şüpheliyim. Müvekkilimin 100'den fazla programcı için iki F # adamı var ve bizim işimiz F # kullanımını tohumlamak ve denetlemek.
Üçüncü ve son kaygınız, daha az topluluk desteği, C # çözümleri için Googling ve F # ve üçüncü taraf araç desteği ile ilgilidir. Yine bunları pratikte sorunlu bulmadım. Fsbugs'a F # 'daki ölçü birimleri hakkında bir yorum yaparak e-posta gönderdim ve yorumumu neden yanlış olduğunu ve neden böyle çalıştığını ayrıntılı bir açıklama ile icat eden araştırmacıdan 24 saat içinde bir yanıt aldım. Bunu Anders Hejlsberg ;-) 'den asla alamadım. Ben her zaman çözümler için Google’ı ve bunları C #, VB veya hatta IronPython ile yazılmış buluyorum ancak 3 yıl içinde F # sektörünü kullanarak, çözümü F # 'a çevirmenin önemsiz olmadığı tek bir örneği hatırlayabiliyorum. Aslında, geçenlerde C # sample veri seri hale getiricisini MSDN'den F # 'ye dönüştürdüm ve 5 kat daha kısaydı. Sonunda, NUnit gibi araçlarda F # desteğinden bahsettiniz. NUnit'i F # 'dan bir süredir problemsiz olarak kullanıyordum. Bunlar .NET araçları, C # araçları değil.
Örnek olay : Mevcut müşterim sadece ünite testi için NUnit'i kullanmakla kalmıyor, aynı zamanda FD'de TickSpec'i BDD için SpecFlow'a teknik olarak daha üstün bir alternatif olarak NUnit'in üzerine kurdu. Yazar, TickSpec'in SpecFlow'un boyutunun küçük bir kesri olduğunu ve daha fazla özellik sağladığını gösterme noktasına geldi. Dahası, F # deneyimi olmayan iş yerindeki geliştiricilerin birçoğu (ve, daha önce fonksiyonel programlama deneyimi olmadığına inanıyorum), bunu sorunsuzca çözdü ve F # + TickSpec çözümlerini çözmeyi kolaylaştırdığı için ilgisiz bir projede kullanmaya başladı. sorunları.
FWIW, müvekkilime F # .NET Journal'ımıza ücretsiz bir site aboneliği verdim .
HTH!