Kabul edilen cevabın ana itişine kesinlikle katılıyorum ve temel olarak Erlang'ı deneyerek bir şeylere daltığınız göz önüne alındığında, muhtemelen nasıl öğrendiğinizi oldukça iyi anladığınız ve sağda biraz dürtmeye ihtiyaç duyduğunuz gibi geliyor açıkça, bu sizin için iyi bir cevaptı ... Ama sanırım bu soruya biraz farklı yaklaşacağım, çünkü bu cevabın bana pek yardımcı olmayacağını görüyorum; Ben her zaman öğrenmek için kod! İşte düşüncelerim ...
(BTW, bir kitaptaki bölümler için daha ayrıntılı olarak devam etme eğilimindeyim ve eminim içgüdülerimi burada tamamen boğamıyorum , ama farklı bir çakışma deneyeceğim; sadece düşüncelerimi burada özetleyecek ve birisinin herhangi bir şey hakkında daha fazla ayrıntı istemesi veya söylediğim bir şeyin bu biçimde yanıltıcı olduğunu düşünmesi durumunda, yanıt hatırlatıcılarından geçmeyi hatırlamak için elimden geleni yapacağım ...)
Kendimi görevde tutmaya çalışmak için burada OP'de sorulan itme sorularını anladım; Açıklamak için gerektiğinde kenar çizgilerini minimumda tutacağım ....
Önce hızlı cevaplar:
benzer bir durumdaydım? En azından benzerdi; Bununla ilgili birçok farklı proje yapıyorum ... (CRM / Web / DB / Veri Entegrasyonu / vb.)
nasıl / neden fonksiyonel atlamak yaptım? " Bazı LINQ örnekleri gördüm ve kesinlikle bir tür entegre, statik olarak yazılan, sorgu dil hayal ettim (öncelikle statik olarak yazılan diller (öncelikle C ++ ve daha sonra C # kullandım gibi) )] kariyerim boyunca ... Ama, içinde bulunduğum oldukça hızlı ateş eden bir ortamdı ve geçmişte ne olduğunu sık sık görsem de, bunu gerçekten hiç düşünmemiştim, Düz Eski Nesneler (lol!) üzerinde işlemlere kolayca izin verebilirim / izin verebilirdim; gördüğümde ona sahip olduğumu biliyordum ... bu yüzden ve bunun nasıl başladığı: LINQ'yu anlamayı öğrenmeye odaklandım .
Dört Düşünce ... errr, hayır bu doğru değil ...
Martijn Verburg'un cevabını okuduğumda , işlevsellikten bahsetmek, üzerinde çalıştığım her şeyin kodunu uygulamaya başlamaya hemen aklımı getiriyor ... İlk denemenin ne kadar sığ olduğuna bağlı olarak farklı cevap verebilirim, ancak sadece ayak başparmağınızı daldırdığınızda, doğrudan iş için (ya da yakında iş olacak) bana heyecan / tutku sağlayacak bir şeyim olduğundan emin değilim. ...
Neredeyse tamamen statik olarak yazılmış dillere + OOP metaforlarına ve kalıplarına + dayanıyordum. Yıllar boyunca gerçek problemlerimi çözerken beynimi yanlışlıkla sardım ne olduysa ... muhtemelen LINQ / FP ile size bu kadar yardımcı olmayacak şeylere adanmış çok fazla beyniniz var.
Eğer OOP'deki kullanarak sona erecek prosedürel bir sürü var, bunlarla bunu bir öncelik yapmadan C ++ C gelenler: Ben biraz saf prosedürel vs OO programlama gibi düşünmeye grok / ken / "get" OO C ++ 'da çok kötü oluyor. Aslında C ++ 'ı bildiğini gerçekten düşünen , ancak en fazla C ++' dan çok basit bir temel / ders kitabı anlayışına sahip olan ve neredeyse hiç anlamadan çok fazla (15+) uzun süreli yazılım ve cihaz sürücüsü geliştiricisi ile röportaj yaptım . OOP deneyimi - çünkü aslında hiç OOP yapmadılar ... Yapısal olarak kullanılan statik olmayan ve tekil olmayan sınıflarla bir miktar statik üyeli ve statik fonksiyonlarla tektonlu çok amaçlı sınıflar yazdılar.
FP'nin de benzer şekilde zihin bükme (paradigmada gündeme gelmeyenler için) kavramları ve onunla birlikte gelen diğer şeyleri var ve (benim için ideal olacak birçok tekniğin hibridizasyonunu bulduğum halde) daha fazla anlıyorum ve daha çok zaman geçtikçe, araç setime gerçek işlevsel yetenekler eklemeden önce düşüncem tam olarak ne kadar sınırlıydı; Geçmişte pek çok şeyi belki de çoğu OO programcısından biraz daha yaratıcı bir şekilde uygulamayı başardım, ama düşüncelerimin daha önce ne kadar bodur olduğu kavramlarını kullandığımda ... Çözülebilecek tüm problem sınıfları var C ++ / C # 'da yapmak için çok fazla eğme cehennemi almak için kullanılan birkaç satırda.
aniden kendini bulursun ...
"Çok Uzun" Bir Gönderi
Bir bükülme "okumadı" labirentindesiniz, hepsi aynı.
Yakın gelecekte, hızla yaklaşan bir telekonferans görüyorsunuz.
> veciz
HI-hı. Elbette. Tamam, "kısa" modun "açık" olduğunu söyleyeceğiz.
Yakın gelecekte, hızla yaklaşan bir telekonferans görüyorsunuz.
> bunun anlamı ne?
Sadece söylüyorum'. Bu sabah bir şey yapmak zorunda kalmadın mı?
Yakın gelecekte, hızla yaklaşan bir telekonferans görüyorsunuz.
> hey, arkanda bir yulaf ezmesi mi?
Ne!? NEREDE?! [çığlık atıyor]
> Maalesef NEREDE NEREDE anlamadım, yeniden ifade ettim?
[koşmaya ve çığlık atmaya devam etti, alaycılık fark edilmedi]
Peki ... Ne öğrenmeliyim, sevgili PSE, sevgili PSE?
Şahsen C # ile LINQ ile başladım. Her seferinde birkaç kavram tanıtmama izin verdi ve sürekli FP ve kavramları ve daha fazla LINQ ve ikisi arasındaki ilişki hakkında okurken, üretken işler yaparken bana bir yol verdi. Bir seferde birkaç şey ekledim, veri sorguları bir tonu anlamak zorunda kalmadan hızlı bir şekilde bana yararlı bir araç haline geldi.
Şimdi, geriye dönüp baktığımda, önce bir sonraki projemi (yaklaşık bir yıl sonra ele aldım) yapabilseydim; F # ile orta derecede aşina oldum (bu arada, bana ML (metalangu) öğrenmeye büyük bir başladım ve diğer türevler (örneğin, OCaml .)
Temel olarak, 'neye' iyi bir cevap, sizi ilgilendiren bazı programlama problemleri ile iyi bir eşleşme bulmaya bağlı olduğunu düşünüyorum, ancak elbette öğrenmek istediğiniz bir miktar FP ile eşleşmelidir ... (ve durulayabilirsiniz / listeden bir şey çaldıktan sonra tekrarlayın / köpürtün ...) Ve elbette, her zaman yapmak için ayarladığınız ana şeyden biraz daha fazlasını öğrenirsiniz; ilk başta bazı bebek adımları attım, ama sonra daha büyük şeyler yaptım ve bunları yaparken daha küçük şeylerin yerine oturmasına izin verdim.
İlk olarak, teknenizi ne yüzer? Özellikle ilk başta (sizin için) eğlenceli ve heyecan verici bir şeye sahip olmak en iyisidir ve bu sizin ilginizi sizin için değerli kılacak kadar tutacaktır. Yani, üzerinde çalışmak için IOW sorunları ve bu sorunları ele teknikler ... LINQ ve benim için ilk satır içi veri sorgulama. Özyineleme benim için başka bir şeydi, kuyruk özyineleme de dahil olmak üzere, GodelEscherBach-ness'i kazıyorum; ve kuyruk özyineleme hakkında okuyordum. Bu süre zarfında üzerinde çalıştığım şeyler beklemeye alındı ve büyük bir zaman bloğuna sahip oldum, bu yüzden uzun süre devam edebildim. Daha az kesintiyle daha kolaydı, ama eğlenceli olduğunu düşündüğüm şeyleri seçtiğim için, işin kesilmesiyle bile o kadar da zor değildi. :)
Kendimi tanıyan Yengeç Programı gibi size anlatabileceğim güzel bir şey bulamamam da, oldukça iyi başardım.
Ve ... Ne ile öğreneyim, sevgili PSE, sevgili PSE, neyle?
Bunun için, zaten ilgilendiğim çeşitli algoritmalar kullandım, artı F #'da yapabileceğinizi merak ettiğim çeşitli şeyler ve fikirlerim tükendiğinde 99 şişe bira ve Project Euler gibi şeylerle uğraşardım sorunlar ...
FP'nin ilginizi çeken birçok şeyi bulacağınızdan eminim; geliştirmelerden OOP'a kadar her şeyi, daha önce düşündüğünüz şekilde tanımadığınız ve muhtemelen ifade edecek zihinsel modele sahip olmayan bir şekle çevirmek için biraz daha özlü bir şekilde belirtmenize yardımcı olan her şeyi sunar. önce.
Ama ... Modelimde bir delik var, sevgili PSE'ye bir delik ...
Ve bu yüzden, özellikle başlangıçta, ama gerçekten öğrenme süreniz boyunca (ve bir şey öğrenirken her zaman doğru değil mi?) Bu yüzden en azından ilgisiz şeyleri okumak için problemler arasında biraz zaman ayırmanız önemlidir, ancak hala FP ve uzmanlar tarafından yazılan kaynak kodunu okuma, tercihen aynı veya benzer problemleri çözme zamanı; şeylerin açıklamaları kadar ...
Ve tüm bu süre boyunca, eski bakış açınızdan değil, FP'nin kendisinden, hepsini anlamak için beyninizi zorlamalısınız ... Benim için bir noktada, tıkladı ve ... en iyi ilişkilendirebileceğim şey Hollandaca'da az çok akıcı hale geliyor; bir noktada kendimi zihniyete yeterince koymayı başardım (bunu daldırma yoluyla yaptım, temelde burada tarif ettiğim şey; sadece "kitap larnin" yoluyla öğrenmeye çalışmak yerine kendinizi FP'ye daldırmak ...
Ve sonunda yaptım; Her şeyi içselleştirmeyi başardım ve beynimi, OOP'a geri çevirmek için çaba harcamadan FP / LINQ'yu patlatmaya başlayana kadar etrafta büktüm. (Evet bunu yaptım; eteğimi asacak bir şeyim vardı. Şapka. Her neyse.)
Son düşünceler...
Benim, benim, akıllıca imza düşünme yeteneğini kaybediyorsun
bölüm başlıkları. Ne utanç.
Telekonferans hâlâ hızla yaklaşıyor. Şimdi çok daha büyük görünüyor.
> evet, evet, iyi .. kısa ve hepsi. Görüyorum ki bu yiğitliği kaybetmeyi başardın.
yakın çağrı, bu ... şey, evet, ter olmak ... OH HAYIR GERİ!
AAAAAAAHHHHHH !! [bir kez daha çığlık atıyor]
Telekonferans hâlâ hızla yaklaşıyor.
Bir şekilde Sir Lancyjohn Cleezewiz'i andırıyor.
Neredeyse üzerindedir.
> hey, acele et! Seninle deneyecek bir deneyim var! (ve bir po-ta-to)
Doğal olarak FP hakkında online bilgi bulabilirsiniz. Önemli olan temel kavramları anlamak ve bunları uygulamayı öğrenmektir. Örneğin, değişmezliği ve FP için neden önemli / yararlı olduğunu öğrenin. Saf FP'nin resmi kanıtlara ne kadar daha uygun olabileceği gibi, her şeyle birlikte gitmek için küçük bir teori öğrenmenizi şiddetle tavsiye ederim. Bu, F # 'nin öncüsü ML'nin arkasındaki itici bir güçtü. YMMV elbette gözyaşlarından sıkılmış biri olabilirsiniz, bu durumda, kullanılan tekniklerin tam olarak neden olduklarını görmek için çok sayıda örnek, çok sayıda deneme yanılma , 'Aha!' ampul anı.
Şimdilik bırakacağım. Umarım bu birileri için yararlıdır. Öğrenmek için belirli şeylere biraz daha girmek istedim ama şimdilik zamanım kalmadı. Umarım benim için uzun bir hafta olmak istiyor, ancak en azından hafta sonu olacak, ancak kısa süre sonra geri almak için biraz zaman bulacaksınız.
<3 "Bir durma boşluğu olan GRUEBOL ile tanışın; SnozzML bitene kadar. Yakında olmalı; Bu sefer bana yardımcı olan büyük bir komitem var." --Grace Hopperwit Yumurta, Ünlü Son Kelimeler , XX97 GUE <3