Что узнать дальше: F# или LINQ

просто начал мочить ноги с C# и .NET, пока это нравится. Я думаю, что у меня есть основная суть конструкций языка C#, так какую технологию я должен погрузиться в следующий: F# или LINQ?

Я нацелен как на" расширение моего горизонта", так и на "улучшение моего резюме" в определенном порядке.

UPDATE: от чтения ваших ответов я до сих пор склоняюсь к изучению LINQ, так как это "обязательно для всех программистов .NET". Я оставляю вопрос откройся ненадолго, просто чтобы получить больше возможностей. Спасибо за ответы.

UPDATE 2: Ok, поэтому из чтения ваших ответов кажется, что LINQ имеет самую легкую кривую обучения и применяется к C# и F#, поэтому время, проведенное с LINQ, не "тратится", даже если я в конечном итоге пойду с F#. Еще раз спасибо за ответы.

8 ответов


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


Это зависит от того, что вам нужно сделать.

Если вы хотите создать приложения WPF или ASP.NET или приложения Silverlight для Интернета, погрузитесь дальше в C# и LINQ. Если вы хотите создавать научные, финансовые приложения для хруста чисел, перейдите к F#. Если вы просто хотите повеселиться, идите с обоими : -)

обратите внимание, что усилия, необходимые для изучения LINQ и усилия, необходимые для изучения F#, на порядки отличаются: LINQ-это, по сути, просто библиотека и специальная синтаксис построения запросов, и если вы привыкли писать SQL, вы найдете его очень легко понять. С другой стороны, если вы привыкли к императивному программированию на таких языках, как C#, освоение F# потребует смены парадигмы. Таким образом, F# также является технологией, которая расширит ваш горизонт больше всего (в зависимости от вашего текущего набора навыков, конечно).


Linq и F# очень разные.

F# - это язык сам по себе, но linq-это инструмент или функция, которую вы можете использовать на этом языке.

Linq является фантастическим и упростит ваше развитие во многих областях и сделает вас более продуктивным в долгосрочной перспективе.

Linq является обязательным для всех разработчиков dotnet.

вот ссылка, показывающая некоторые из способов использования linq LINQ на 101


Я провел некоторое время с F# в качестве хобби, прежде чем у меня была возможность изучить C#3 для работы. Оказалось, что я уже сильно использовал LINQ в своем коде F#, не зная его в виде последовательных выражений. Когда я познакомился с LINQ, я сразу узнал его,а также сразу понял принцип отложенного исполнения.

Итак, если вы узнаете F#, вы уже знаете LINQ. Тогда вам нужно только посмотреть синтаксис.

кроме того, научиться программировать idiomatic F# научит вас думать как функциональный программист. Знание того, как программировать с рекурсией, запоминанием и неизменяемыми значениями, также поможет вам в создании более чистого кода C# (с LINQ, конечно). Это мой опыт.


LINQ (Language Integrated Query) - это небольшой встроенный язык в C#, который позволяет вам иметь дело с коллекциями объектов очень естественным образом, например

int[] numbers = new int[] {1,2,3,4,5,6,7,8,9};

var smalloNumbers = from n in numbers where n < 10 select n;

это действительно C#, LINQ - это просто еще одна особенность языка, та, которую он разделяет с VB. Связанные технологии используют LINQ для доступа к хранилищу баз данных (LINQ-to-SQL LINQ-to-NHibernate и т. д.) или другим интересным сервисам (таким как amazon или ebay и т. д.), Но сам LINQ можно узнать из языка самого C# (LINQ-to-objects) без необходимости играть с базами данных или что-то в этом роде.

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

Итак, в резюме я бы рекомендовал сначала подобрать LINQ вместе с другими языковыми функциями в C~ вы, возможно, пропустили (LINQ также проведет вас через Лямбда-выражения, анонимные типы и ключевое слово var, если они еще не обнаружены), а затем перейти на F# как новый учебный проект на более позднем этапе. Как разработчик C#, я использую LINQ каждый день в своем коде.

надеюсь, это поможет.


ИМХО

F# а то LINQ


оба из них приятно освоить.


Почему не другие фреймворки в пространстве .Net, такие как WCF, WPF, ASP.net MVC, некоторые .Net ORM и т. д.? F# - это функциональный язык программирования .Net платформы. Если вы не использовали другой функциональный язык программирования, это другая парадигма, и кривая обучения будет круче, чем для LINQ. Лучший способ узнать LINQ-использовать его в игрушечном или реальном проекте, где вы используете базу данных C# и SQL server. LINQ не имеет много нового синтаксического сахара.
С другой рука, в то время как выше относится к обучению F# тоже, вы можете решить любые упражнения по программированию или проект Эйлера, как головоломки, используя F#, чтобы ознакомиться с программными конструкциями.