Я, безумовно, погоджуюся з основною позицією прийнятої відповіді, і, враховуючи, що ви в основному занурюєтесь у речі з головою, намагаючись Ерланг, це звучить, як ви, ймовірно, маєте досить добре розуміння того, як ви навчаєтесь, і вам просто потрібно трохи натиснути праворуч напрямок, так явно, що це була хороша відповідь для вас ... Але, я думаю, я підходив би до питання трохи інакше, оскільки бачу, що ця відповідь зовсім не допомогла б мені; Я завжди коду, щоб дізнатися! Отже, ось мої думки ...
(До речі, я , як правило , йти далі в деталях підходить більше для, скажімо, голови в книзі, і я впевнений , що я не можу стримувати свої інстинкти повністю тут, але я збираюся спробувати іншу тактику, я збираюся просто узагальнити свої думки тут, і якщо хтось захоче більше деталізувати щось, або вважає, що я вважаю, в цьому форматі вводить в оману, я зроблю все можливе, щоб пам’ятати, щоб переглянути нагадування про відповіді ...)
Щоб спробувати утримати себе над завданням, ось моє розуміння поштовхів, заданих в ОП; Я буду доводити сторону до мінімуму в міру необхідності, щоб пояснити ....
Спочатку швидкі відповіді:
я був у подібній ситуації? Це було принаймні схоже; Я був на керівній посаді, роблячи багато різноманітних проектів, які, тим не менш, були пов'язані ... (CRM / Web / DB / Integration Data / тощо).
як / чому я зробив перехід до функціональності? " Я побачив кілька прикладів LINQ, і хоча я, безумовно, мріяв про якусь інтегровану, статично типовану мову запитів [як я в основному використовував статично введені мови (насамперед C ++, а пізніше C # )] Протягом усієї моєї кар'єри ... Але в мене було досить швидке вогневе середовище, і хоча мені часто вдавалося бачити, що відбувається в минулому, я ніколи не думав це, тому я ніколи не передбачив, що це могла б / дозволила б операції над Простіми Старими Об'єктами (кохаю!) так само легко; коли я побачила це, я зрозуміла, що мені доведеться це мати ... Отже, ось чому і початок роботи: я зосередився на тому, щоб навчитися розуміти LINQ .
Чотири думки ... помилково, ні, це неправильно ... Думки
Коли я читаю відповідь Мартійна Вербурга , згадка про функціональність бізнесу негайно привертає увагу до того, щоб почати впроваджувати код для того, над чим я працюю ... Залежно від того, наскільки дрібним був цей початковий експеримент, я можу відповісти по-іншому, але припускаючи, що це просто зануривши великий палець ноги, я не впевнений, що у мене було що-небудь безпосередньо для роботи (або незабаром до роботи), що могло б забезпечити мені хвилювання / пристрасть. Я думаю, що вам, мабуть, доведеться мати перші перші проблеми, з якими ви починаєте вирішуватись. ...
Мене майже повністю ґрунтували на мовах статичного типу + метафори та шаблони OOP + все, що я закінчив, обернувши мозок навколо випадково, вирішуючи мої фактичні проблеми протягом багатьох років ... Справа в тому, що, якщо ти зовсім такий, як я, у вас, ймовірно, є багато мозку, присвяченого речам, які не допоможуть вам так сильно з LINQ / FP.
Я думаю, що це щось на зразок чистого процесуального проти програмування OO: є багато процедурних речей, які ви в кінцевому підсумку використовуєте в OOP, але ті, хто приходить на C ++ з C, не роблячи пріоритетним способом grok / ken / "get" OO врешті-решт, це дуже погано на C ++. Я на насправді опитав біса багато (15+) довгий час прошивки і розробники драйверів пристроїв , які дійсно думали , що вони знали , C ++, але хто, в найбільш , були дуже базовим / підручник розуміння C ++, з практично немає розуміння або досвід роботи в OOP - тому що вони ніколи насправді не робили OOP ... Вони писали однотонні багатоцільові класи зі статичними членами та статичними функціями з деякою кількістю класів нестатичних / не синглетонних, які використовувались як структури.
І FP має подібні згинальні (як і для тих, хто не парадигма) понять та інші речі, які йдуть разом із цим, і (хоча я вважав, що гібридизація багатьох методів є ідеальною для мене), я все більше розумію і тим більше, що час триває, наскільки обмежене було моє мислення до отримання реальних функціональних здібностей до мого набору інструментів; Мені в минулому вдалося реалізувати багато речей таким чином, який був дещо креативнішим, ніж, можливо, більшість програм-програмістів, але, коли я використовую ті концепції, наскільки моє мислення було попереднім ... Є цілі класи проблем, які можна вирішити в декількох рядках, які використовували певний перекрут, який можна зробити в C ++ / C #.
раптом ти опиняєшся ...
У "Занадто довгому" дописі
Ви перебуваєте в лабіринті закрученого "не читали", все так.
Ви бачите телеконференцію найближчим часом, що швидко наближається.
> короткий
Угу. Звичайно. Гаразд, ми скажемо, що "короткий" режим "увімкнено".
Ви бачите телеконференцію найближчим часом, що швидко наближається.
> що це повинно означати?
Просто говорю'. Вам не довелося щось робити сьогодні вранці?
Ви бачите телеконференцію найближчим часом, що швидко наближається.
> Гей, це грю за тобою?
Що!? ДЕ ?! [тікає кричати]
> Вибачте, я не зрозумів, ЩО ДЕ, перефразовувати?
[продовжував бігати і кричати, сарказм непомітно]
Отже ... Що я повинен навчитися, шановний PSE, дорогий PSE?
Я особисто починав у C # з LINQ. Це дозволило мені вводити декілька понять одночасно, і, коли я постійно читав про ПП та її концепції, і більше LINQ, і про стосунки між ними, це дало мені шлях вперед, продовжуючи займатися продуктивною роботою. Я додав декілька речей за раз, запити даних швидко стали корисним інструментом для мене, не розуміючи тонни.
Тепер, озираючись на це, я хотів би спочатку зробити свій наступний проект (вирішений приблизно через рік); Я помірковано ознайомився з F # (що, до речі, дало мені великий початок вивченню ML (метамовлення) та інших похідних (наприклад, OCaml .)
В основному, я вважаю, що гідна відповідь на те, що залежить, залежить від того, щоб знайти гарне сполучення з проблемою програмування, яка вас цікавить, але, звичайно, вона повинна поєднуватися з трохи FP, який ви хочете дізнатися ... (і ви можете промити / повторити / пізно після того, як щось збиваємо зі списку ...) І, звичайно, ти завжди закінчуєш вчитися трохи більше, ніж головне, що ти поставив за мету; спочатку я робив кілька дитячих кроків, але потім я закінчив робити більші речі і пускати дрібніші речі на місце, поки я це робив.
По-перше, що пливе ваш човен? Тим більше, що спочатку найкраще мати щось цікаве та захоплююче (для вас), і це дозволить зберегти ваш інтерес достатньо, щоб зробити це вартим для вас. Отже, проблеми з IOW, над якими працювати, і методи, які вирішують ці проблеми ... LINQ та вбудовані запити даних для мене спочатку. Для мене була ще одна рекурсія, включаючи рекурсію хвоста, я копав її GodelEscherBach -ness; і я читав про рекурсію хвоста. Приблизно в цей час речі, над якими я працював, були призупинені, і в мене закінчився великий проміжок часу, тому я міг довго тримати його. Простіше було з меншими перервами, але, оскільки я вибирав речі, які, як я вважав, веселими, не все було так важко навіть з перервою в роботі. :)
І хоча я не придумав нічого крутого, я можу вам сказати про те, як, наприклад, усвідомлюючи Програму крабів, мені вдалося в цьому досить добре впоратися.
І ... З чим я це навчусь, шановний PSE, дорогий PSE, з чим?
Для цього я використовував різні алгоритми, які мене так чи інакше зацікавили, а також різні речі, які я цікавив, чи можна в F #, і коли мені не вистачить ідей, я б вирішив такі речі, як 99 пляшок пива та Project Euler проблеми ...
Я впевнений, що ви можете знайти багато речей, які вас цікавлять, що стосується ПП; він пропонує все, від вдосконалень до OOP, які допомагають вам констатувати речі трохи коротше, аж до скручування способу, який ви раніше про це подумали б, у форму, яку ви не впізнаєте, і, швидше за все, навіть не мав можливості висловити ментальну модель. раніше.
Але ... У моїй моделі є дірка, дорогий PSE, отвір ...
І тому важливо, особливо на початку, але насправді впродовж усього часу навчання (а чи не завжди це правда, коли ви щось навчаєтесь?) Ви принаймні забираєте трохи часу між проблемами, щоб прочитати речі, які не пов'язані між собою, але ще FP та час для читання вихідного коду, написаного експертами, бажано вирішити ті ж чи подібні проблеми; а також їх пояснення речей ...
І весь цей час ви повинні напружувати свій мозок, щоб зрозуміти це все, не зі своєї старої точки зору, а всередині самої ПП ... У якийсь момент для мене це натиснуло, і ... річ, яку я найкраще можу пов'язати з цим стає все більш-менш вільною мовою голландської мови; в якийсь момент мені вдалося вкласти себе в розум (я це робив зануренням, що в основному те, що я тут описав; занурившись у FP, а не намагаючись навчитися цьому виключно за допомогою "книги larnin" ...
І, врешті-решт, я і зробив; Мені вдалося інтерналізувати все і крутити мозок навколо, поки не почав з'являтися FP / LINQ, не будучи мені навіть докладати зусиль, щоб перекласти його назад в OOP. (Так, я це зробив; мені потрібно було щось повісити спідницю. Капелюх. Що б там не було.)
Заключні думки ...
Моє, моє, здається, ти втрачаєш здатність думати про свій підпис розумно
заголовки розділів. Який сором.
Телеконференція все ще швидко наближається. Зараз вона виявляється значно більшою.
> так, так, добре .. лад і все. Я бачу, вам вдалося втратити цю гру.
закритий дзвінок, що ... ну, так, я буду тер ... О, НЕ ЗАРАЗ!
AAAAAAAHHHHHH !! [знову біжить кричавши, ще раз]
Телеконференція все ще швидко наближається.
Це якимось чином нагадує сер Лансійона Клієвіца.
Це майже на вас.
> ей, поспіши назад! У мене є експеримент, щоб спробувати з вами! (і по-та-до)
Ви, природно, можете знайти багато інформації в Інтернеті про FP. Головне - зрозуміти основні поняття, а потім навчитися їх застосовувати. Наприклад, дізнайтеся про незмінність і чому це важливо / корисно для FP. Я настійно рекомендую вивчити трохи теорії, щоб разом з усім, як, наприклад, чистий ПП може бути набагато прихильнішим до формального підтвердження. Це було рушійною силою для родоначальника F #, ML. YMMV, звичайно, вам може бути комусь нудно до сліз, в такому випадку багато прикладів, багато спроб і помилок, щоб точно зрозуміти, чому використовувані методи є такими, якими вони є, допоможуть вам мати те, що "Ага!" момент лампочки.
Тож я покину це на цьому. Сподіваюся, це комусь корисно. Я хотів трохи пізнати конкретні речі, щоб навчитися, але на даний момент у мене немає часу. Я сподіваюсь, що знайду якийсь час, щоб повернутись до цього скоро, хоча, схоже, це буде довгий тиждень для мене, тому, напевно, буде принаймні вихідні.
<3 "Представляємо GRUEBOL, зупинку; до тих пір, поки SnozzML не закінчиться. Це має бути скоро; я отримав величезний комітет, який допомагає мені цього разу." - Грейс Хоппервіт Егхед, відомі останні слова , XX97 GUE <3