Линия бизнес-приложений: облегчит ли F # мою жизнь?

Конечно! Используя опцию -r, jq будет печатать содержимое строки непосредственно на терминале, а не как строки, экранированные JSON.

jq -r '.stack_trace'
30
задан funwithcoding 23 February 2010 в 17:29
поделиться

4 ответа

Я нахожусь в той же лодке, что и вы, занимаюсь множеством бизнес-приложений, ничего "забавного", вроде игр, компиляторов или поисковых систем.

Ваш опыт будет варьироваться, но, по крайней мере, по моему собственному опыту, многие команды разработчиков не хотят сразу переходить к F #, потому что никто другой в команде не знает и даже не слышал об этом. И сразу же вы должны ответить на такие вопросы, как "чем он отличается от C #?" Если вы можете убедить своего босса позволить вам написать с его помощью несколько демонстрационных приложений, дерзайте!

Итак, с учетом сказанного, я считаю, что C # не очень хорош в бизнес-правилах, но он обрабатывает графические интерфейсы как чемпион; Неизменяемость F # затрудняет разработку графического интерфейса, но бизнес-правила и рабочие процессы кажутся естественными. Таким образом, два языка имеют свои сильные стороны и дополняют друг друга.

В моих собственных LOB-приложениях F # обходит C # в нескольких областях:

  • Асинхронные рабочие процессы F # и процессоры почтовых ящиков на порядки легче работать, чем с собственными потоками и даже с параллельной библиотекой задач. С тех пор, как я использовал процессоры почтовых ящиков для межпотоковой связи, я даже не помню, когда мне в последний раз приходилось блокировать или thread.join () что-либо для синхронизации вообще.

  • Определение механизмов бизнес-правил и DSL с объединениями FTW! Каждое нетривиальное LOB-приложение, над которым я когда-либо работал, имеет свой собственный недоделанный язык правил и интерпретатор, и он почти всегда основан на рекурсивном переключении перечисления для детализации правил и поиска совпадения. Текущий проект, который у меня есть, теперь содержит 1300+ общедоступных классов, около 900 - это простые классы-контейнеры для представления правила.Я думаю, что представление правил в виде объединения F # существенно уменьшит раздувание кода и улучшит движок.

  • Неизменяемый код просто работает лучше - если вы получаете новый объект с недопустимым состоянием, вам не нужно далеко искать, чтобы найти нарушающую строку кода, все, что вам нужно знать, есть стек вызовов. Если у вас есть изменяемый объект с недопустимым состоянием, иногда вам нужно потратить много времени на его отслеживание. Вы можете писать неизменяемый код на C #, но очень сложно не прибегнуть к изменчивости, особенно когда вы изменяете объект в цикле.

  • Я ненавижу нули. Я не могу дать точную оценку, но похоже, что половина ошибок, которые мы получаем в производстве, являются исключениями с нулевой ссылкой - объект неправильно инициализирован, и вы не узнаете об этом, пока не наберете 30 кадров стека в коде. Я думаю, что F # поможет нам с первого раза написать больше кода без ошибок.

C # обычно хорошо работает, когда:

  • Вы пишете код GUI или работаете с изначально изменяемыми системами.

  • Предоставление библиотеки DLL или веб-службы разным клиентам.

  • Ваш начальник не позволит вам использовать те инструменты, которые вам нужны;)

Так что, если вы сможете преодолеть «зачем нам использовать новое языковое препятствие», я думаю, что F # действительно облегчит вам жизнь.

33
ответ дан 27 November 2019 в 22:22
поделиться

На этот вопрос очень трудно ответить - я думаю, что F # сделает некоторые аспекты вашей жизни намного проще, а некоторые немного сложнее.

С плюсовой стороны, работа с многопоточностью должна быть относительно безболезненной - F # асинхронные рабочие процессы являются огромным преимуществом. Кроме того, F # Interactive делает быструю итерацию и изучение кода очень простым. Для меня это огромное преимущество по сравнению с C #, поскольку я могу протестировать незначительные изменения кода, не проходя полную сборку.

На нижней стороне оснастка для F # не находится там, где она находится для C #, что означает, что у вас не будет доступа к GUI-компоновщикам, инструментам рефакторинга и т.д. Трудно сказать, насколько высокая производительность может привести к тому, что вы не будете знать больше о вашем сценарии. Одним из обходных путей было бы создание многоязычного решения, которое имеет тонкий внешний интерфейс C #, но опять же сложность может не стоить пользы.

10
ответ дан 27 November 2019 в 22:22
поделиться

Я изучил YUI до JQuery, и проблема с YUI (по моему мнению) является более сложной, что означает, что это более сложно. JQUery это весело кодировать и в то же время вы можете сделать все с ним.

Мой совет был бы использовать JQuery, и если вам нужен какой-то компонент YUI, то используйте оба. Однако я не вижу особого преимущества YUI перед JQuery.

-121--2566826-

Если вы не переключаетесь на рамку ASP.NET MVC, да, ASP.NET сайты, построенные с использованием модели веб-форм, требуют JavaScript.

Элементы с включенным автозапуском , любые элементы управления linkbutton или button и любая проверка на стороне клиента перестанут функционировать, как вы обнаружили.

-121--4817419-

@ У Джульетты и @ kvb есть хорошие ответы, я просто хочу повторить, насколько полезен F # для упрощения многопоточности. В моем блоге « RSS Dashboard в F #, часть шестая (сложив все вместе с WPF GUI) », я говорю

... Обратите внимание на мизерное использование «async» здесь - я используйте Async.StartImmediate, что означает весь код выполняется в потоке пользовательского интерфейса (где запускается обработчик Click), но Я все еще могу делать неблокирующие спят это не заедает пользовательский интерфейс. Это один способ, при котором F # async просто продувает двери от всего остального.

...

Наша информация "назад" ("3 минут назад ") быстро устареет, если мы не обновляйте его, поэтому мы начинаем цикл что перерисовывается каждую минуту. Однажды опять же, F # async бьет прикладом, как я могу просто напишите это, как будто это было синхронный цикл, выполняющийся на UI поток, но неблокирующий сон вызов гарантирует, что пользовательский интерфейс остается в рабочем состоянии. Потрясающе...

но эта запись блога является примером использования F # для ручного кодирования всего пользовательского интерфейса. Это подразумевает торговлю всеми великолепными инструментами GUI, которые вы получаете с C # или VB. Я думаю, что гибридный подход потенциально может свести на нет почти все преимущества обоих (с затратами на два проекта в решении, где вы ранее только что имели один), но у меня (пока) нет прямого собственного опыта, чтобы поделиться здесь.

(Существует ли канонический «пример проблемы» приложения C # GUI, где необходимо добавить многопоточность для улучшения производительности или поддержания приложения в рабочем состоянии во время длительной операции? Если да, я должен проверить его.)

7
ответ дан 27 November 2019 в 22:22
поделиться

Что-то, что вы могли бы увидеть:

Первое существенное бизнес-приложение на F #

Большое LOB-приложение на F #.

2
ответ дан 27 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: