F # или C # для личного проекта Silverlight? - PullRequest
3 голосов
/ 01 июля 2010

Я собираюсь начать работу над проектом по созданию многофункционального интернет-приложения для студенческой организации в моем университете. Я буду единственным программистом, и какие технологии использовать, полностью зависит от меня. Я уже решил использовать Silverlight, но не уверен, использовать ли C # или F #. Вот некоторые вещи, которые я имею в виду:

C #:

  • Я уже знаю это и широко использовал Silverlight на работе. У меня нет F # и мало общего опыта FP.
  • Некоторые говорят, что парадигма ООП лучше работает для сложных пользовательских интерфейсов с отслеживанием состояния.
  • Обслуживание: я буду в школе еще три года, но после этого, если приложение все еще используется, им, возможно, будет лучше найти кого-нибудь еще, чтобы поддержать его, если я использую более общий язык.
  • Опыт C #, вероятно, более ценен в "реальном мире".

F #:

  • Основная причина в том, что я хочу узнать что-то новое. Функциональные языки программирования выглядят довольно круто (я часто использую возможности FP в C # и думаю, что они являются самым большим улучшением в C # 3.0). Думаю, мне было бы намного веселее, если бы я использовал F #, но я нереалистичен, полагая, что затраты времени и усилий могут не перевесить преимущества?

Ответы [ 6 ]

11 голосов
/ 01 июля 2010

По моему мнению, когда вы студент, вы должны пытаться положить пальцы в как можно больше горшков.

Чем больше языков вы играете, тем больше у вас понимания «лучших» способов ведения дел на определенном языке.

Что касается того, что «опыт» более ценен в «реальном мире». Лично я всегда учитываю истинный коммерческий опыт, когда смотрю на потенциальных кандидатов. Опыт работы с языком, когда вы работаете и получаете оплату, чрезвычайно отличается от опыта использования языка при его изучении / изучении. В процессе обучения вы приобретаете навыки и знания, в то время как в коммерческой среде вы получаете опыт решения реальных жизненных проблем.

Итог ... играйте с классными вещами, пока вы еще можете!

4 голосов
/ 01 июля 2010

Поскольку вы ожидаете создать что-то полезное, что будет жить после вашего пребывания в качестве сопровождающего, я бы предложил написать большинство на C #.Что вы можете сделать, чтобы поцарапать свой зуд новой технологии, тем не менее, вытащить отдельные, четко определенные компоненты, которые не взаимодействуют напрямую с пользовательским интерфейсом, и записать их в отдельной сборке F #.Мы сделали нечто похожее с проектом, который я открыл в прошлом.Моя фундаментальная логика пользовательского интерфейса (в данном случае части V-VM MV-VM) была на C #, потому что она так хорошо работает с технологиями WPF.Затем некоторые функционально-ориентированные компоненты самой Модели я разбил на отдельную сборку и написал на F # просто для того, чтобы получить ограниченное знакомство с языком.

Это не подход прыжка двумя ногамитехнологии обучения, поэтому я, вероятно, не выучил столько, сколько мог бы.Только проект на F # не научил бы меня почти так же, как показать функциональность F # большему миру .Net в дружественной манере.

Неважно, какой ключ в такой ситуациидля вас, чтобы повеселиться и наслаждаться тем, что вы делаете.:)

3 голосов
/ 01 июля 2010

Вы можете сделать проект бизнес-логики F # (dll).

А затем пользовательский интерфейс в C #.А в проекте пользовательского интерфейса вы можете добавить ссылку на F # -библиотеку.

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

1 голос
/ 01 июля 2010

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

Вот несколько моментов, которые вы могли бы рассмотреть:

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

  • F # все еще относительно нов, но я полагаю, что есть хороший шанс, что найти кого-то, знакомого с F # через три года, будет намного проще, чем сегодня (и найти младших школьников, которые заинтересованы в изучении чего-то нового, проще: -)).

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

1 голос
/ 01 июля 2010

Я знаю, что его нет в вашем списке, но если вы заинтересованы в изучении чего-то нового, вы можете подумать о GWT - вы пишете свой клиент на Java (что должно быть легко перейти с C #), а затем компилятор поворачиваетсяна стороне клиента в JavaScript.Должно быть немного более кросс-платформенным, чем Silverlight, и это интересное сочетание технологий (CSS, JavaScript и Java никуда не денутся в ближайшем будущем).

0 голосов
/ 06 июля 2010

Я предполагаю, что это будет использоваться в среде интранета. В противном случае я бы усомнился в том, что выбор Silverlight действительно лучший из-за проникновения на рынок. Второй момент, который я хотел бы затронуть, заключается в том, что одним из действительно важных навыков для большинства веб-разработчиков является Javascript. (В настоящее время это будет Javascript с библиотекой, такой как JQuery, для манипулирования DOM, упрощения AJAX и т. Д.), Если приложение не является особенно сложным, может иметь смысл рассматривать DHTML + Javascript в качестве отправной точки и рассматривать только другие технологии, если это окажется слишком много для этого. Однако, если вы собираетесь идти по маршруту Silverlight, то C #, безусловно, наиболее вероятно будет поддерживаться. Если вы все еще учитесь, то это также маршрут, который имеет лучшую документацию. В F # есть отличная документация, но, к сожалению, не так много, как в C #. Вы кратко упоминаете время и стоимость обязательств. Если вы не совсем знакомы с функциональным программированием, F # может занять значительно больше времени, отчасти из-за незнакомости и отчасти из-за количества справочной документации, которая поможет вам в вашем пути. Несмотря на то, что, несомненно, полезно иметь под рукой знание ряда языков программирования, для большинства работодателей важнее глубокое понимание их предпочтительного языка - поэтому слишком большая диверсификация может упустить это. Если вы хотите изучать незнакомый язык программирования, начинайте с чего-то вроде решения задач Project Euler, и это может быть лучшим способом начать, чем погружаться прямо в крупный проект с новым языком. Если вы начинаете в C #, вы всегда можете создать проект F #, который реализует функции, более подходящие для его фокуса, и ссылаться на него из C #, чтобы погрузить свой палец в свои воды, не тратя при этом много дополнительного времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...