2009-05-18 3 views
5

ВопросПодсказки для декларирующих языков программирования grokking?

Как указывалось выше, у вас какие-либо советы, чтобы помочь ГРОК/понять/получить-ваш-голова-около декларативных языков программирования?

Или это просто случай, когда вы должны погрузиться в язык и синтаксис, пока он не просачивается, пока не получите тот золотой момент, где вы найдете Get It. На самом деле это не вариант, поскольку я не могу больше запираться в комнате в течение нескольких дней, просматривая более полудюжины разных книг по предмету (обязанности - то, что они есть и все)

Итак, любые советы или трюки, которые помогли вам, когда вы занимались декларативными языками, какие-либо идеи для передачи?

P.S. Я лично отвечу на первый ответ, который гласит: «Завершить работу и положить в работу».

фон

мне было 13 лет я, когда я впервые начал отожмите код (основной, на моих сестер Oric-1).

С тех пор я работал со многими новыми концепциями и множеством разных языков, делая все возможное, я быстро взбираюсь. Ориентация объекта? Не беспокойтесь. Управляемые событиями парадигмы? Дым коппер, я вернусь на завтрак.

Owl, Mfc, ActiveX, Vb3, 4, 5 & 6, VB.Net, Pascal, Delphi, C, C++ & C#. Никто не стоял на моем пути, по крайней мере, не очень долго.

Однако в последнее время мой идеальный результат занял немного избиения.

Пару недель назад я бросился в Xaml, и люди, я больше тону, чем плавание.

Я думаю, что моя главная проблема в том, что она декларативная. Все мои другие навыки программирования являются процедурными. Я ударил этот блок раньше с помощью MSBuild, я могу скопировать примеры того, как заставить MSBuild работать, но будет потеряно, если что-то сработает.

Назад к Xaml, в настоящее время я схожу с ума, пытаясь связать триггеры с свойствами и получить необходимый эффект.

Я могу опубликовать свой конкретный вопрос Xaml здесь достаточно скоро. На данный момент я задаю этот общий вопрос «декларативное программирование».

P.S. Нет, я на самом деле не дерзкий. Да, я наткнулся на ад, когда впервые попал в OO, и в первый раз я должен был написать управляемый событиями интерфейс (VB3 на Windows 3.11).

Редактировать

Это начинает осознаваться, предел прочности на разрыв, что у меня это далеко в этой области окупаются, он просто занимает так много времени Fracking!

. , , Я думаю, что я слишком стар для этого. , ,:)

+1

У вашей сестры был Орик? Она, должно быть, очень необычная леди! – 2009-05-18 13:40:19

+0

Grokking, с 2 k's;) – Carra

+0

Basic? Извините - вы FUBAR ... :) – xtofl

ответ

3

Мне пришлось научить XSL (или XSLT, как вам угодно) кучу в начале века :), и это действительно другой мир. Это, однако, является основой сдвига парадигмы: вы должны понимать, что декларативные языки действительно разные. Самый важный совет, который у меня есть, - это продолжать изучать решения других людей, вставлять работу, и действительно попытаться прекратить думать в FLOW. Хуже всего то, что в XSL есть «if» и «else», но обычно есть другой способ сделать что-то.

В отличие от обучения OO, в XSL (или любом декларативном языке, я полагаю) вам не удастся сделать то, что вы пытаетесь сделать, если вы не сделаете это декларативно.

Таким образом, ответ частично «заткнись и сделай работу», как ты предлагаешь, но более важным моментом является осознание того, что большая часть работы сводится к изменению парадигмы. Итак, реальный ответ: «держите глаза очищенными от смещения парадигмы». Вы должны перестать думать в потоке и начать думать с точки зрения правил, которые могут срабатывать в любом порядке ... если они закончены правильно, это не имеет значения, когда они срабатывают. Когда вы, наконец, задумываетесь о правилах, а не о том, что происходит, вы начинаете сбрасывать смену.

+0

+1 за хороший совет. , , но и за «заткнись и сделай работу». Спасибо mate :) –

+0

Sho 'вещь, удачи с этим ... –

+0

Выбор правильного ответа, за полезный совет. Спасибо друг. –

0

Я нахожу, что самый простой способ «grok» - просто начать использовать его исключительно для всего вашего кодирования. С совершенно новым языком я бы сказал, что для меня кривая обучения составляет приблизительно 2 недели кодирования около 4-5 часов в день. После этого он внезапно «щелкает», и вы можете начать меньше полагаться на руководства и документы.

+0

Я согласен, но я искал уроки, извлеченные в другом месте a.k.a «Короткие сокращения», которые, по всей вероятности, не существуют. Тем не менее, это не больно спрашивать :) –

+1

Там действительно нет ярлыков (кроме «cheatsheets», и даже если бы вы были обманываете себя, не понимая нюансов языков. – ennuikiller

2

Найдите несколько примеров с объяснениями «почему» от кого-то, кто действительно знает этот язык. Он изучает модели и идиомы, которые имеют значение.

Я подозреваю, что вы пытаетесь сделать императивные вещи в декларативной земле, а это значит, что вы думаете о шагах. Запишите поток данных в соответствии с требуемыми входами + функцию без состояния этих входных данных и посмотрите, поможет ли это.

Попробуйте функциональный или функциональный язык, например, ML или Scheme.

1

Я не знаю, каковы ваши конкретные проблемы с Xaml (и я не использовал его сам), но я обнаружил, что при использовании технологий на основе XML, таких как XSLT, мало опыта LISP или Scheme могут долгий путь. Возможно, вам захочется взглянуть на игру с отличной системой схем, свободной от http://www.plt-scheme.org.

0

Я учился в колледже (Языки программирования). Это в значительной степени чувствовало, что я неоднократно хлопал головой о кирпичную стену, но около 3/4 пути через класс, я понял, что стены больше нет; Я несколько дней бил головой о ничего. Это было довольно сюрреалистическое чувство.

Я думаю, что любой другой способ не будет иметь такой же шарм. Прочитайте Гёделя, Эшера, Баха; слушайте много Эмерсона, Озера, Палмера и Кайхосру Сорабджи; курить гянджу, и положить в то время.

+0

Что было в классе? –

1

Рассмотрите ваши любимые “programmer ignorance” pet peeve. Первый фрагмент кода, очевидно, процедурный. Во втором фрагменте вы сделать декларативное заявление что процент, чтобы иметь силу, она должна находиться в диапазоне от 0 до 100.

Так что я предположил бы, что у вас не будет никаких проблем grokking декларативных языков программирования до тех пор, как вы работать над этим достаточно сложно ... there is no royal road to geometry

+1

+1 за то, что вы сделали мою самую успешную должность против меня. Ницца :) –

1

Я вижу, где это может дуть в ваш разум. Все перечисленные вами языки действительно очень похожи (процедурные).

Как только вы получите это, я высоко рекомендую вам изучить functional language. Вам также может показаться, что это сложно, но изучение этого поможет значительно улучшить ваши общие навыки кодирования. У вас будет совершенно новая сумка трюков (даже в процедурных языках), и вы больше никогда не будете бояться рекурсии.

1

Как двоичный Worrier, у меня была долгая история с такими вещами, как C, C++, MFC и т. Д., И они быстро приближались к XAML, WPF и C#. У меня была сторонняя поездка через HTML, Javascript и XSLT, которые, как мне кажется, помогли мне в подготовке к XAML.

Основная идея XAML довольно проста - это все, о чем вы показать, а не то, что вы сделать. Трудная часть с XAML заключается в том, что есть только тонна деталей реализации, чтобы учиться, и вы завершаете изучение их всех одновременно, чтобы иметь возможность получить многое из всего, что было сделано.

Возможно, я был бы более полезным, если бы вопрос был более конкретным.

1

«Программирование - это дать компьютеру последовательность инструкций».

Большинство программистов реагируют с невозмутимым отношением к этому утверждению. Это похоже на ... «ду?»

Но вера в это утверждение вызывает у людей проблемы с пониманием других парадигм программирования. Это не Действительно, и не было очень долго. Чтобы лучше понять программирование, многие могут подумать о том, почему это утверждение ложно.

Даже если вы запрограммировали чистую сборку, современные процессоры изменили бы ваши инструкции, выполнили предсказание ветвления и попытались выполнить несколько потенциально созависимых инструкций в одно и то же время. Таким образом, они думают в терминах логических зависимостей, а не последовательностей. Метафора последовательности - это ложное представление о том, что инструкция логически зависит от всего, что ей предшествовало. Если бы это было так, лучшим способом рассуждать о программах было бы изучение потока управления. Но это неправда.

Это не просто декларативное программирование, которое не соответствует этой метафоре, но также параллельное и асинхронное программирование.

Смежные вопросы